FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
ordenar registros
Hola tengo una tabla de sqlserver con un campo de tipo nvarchar, en el que guardos numeros y alguna vez letras al final por ejemplo 128,190a,578,78 como puedo hacer para que me ordene de la forma 78,128,190a,578, es decir por orden numérico?
|
#2
|
||||
|
||||
no es la forma más eficiente pero intenta esto:
creas una funcion Código:
CREATE FUNCTION dbo.fun_Numero (@codigo varchar(5)) RETURNS int AS BEGIN DECLARE @nro int; IF @codigo LIKE '%[A-Z]' SET @codigo = CAST( LEFT(@codigo, LEN(@codigo)-1) AS INT) RETURN (CAST(@codigo as int)) END Código:
create table nuevaTabla ( codigo varchar(4), nro AS dbo.fun_Numero(codigo) ) otra forma que me parece más eficiente y si usas SQL Server 2000 pero que no la he probado sería cambiando la intercalación de la tabla usando COLLATE |
#3
|
||||
|
||||
Una solución que puede resultar mas sencilla (siempre depende, claro) es dejar todas las cadenas del mismo tamaño, y rellenas de ceros o de espacios a la izquierda, de manera que el orden Textual resulte el mismo orden numérico:
Código:
'0000078 ' '0000128 ' '0000190A' '0000578 '
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
|
|