Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   ordenar registros (https://www.clubdelphi.com/foros/showthread.php?t=20605)

davidgaldo 20-04-2005 12:58:50

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?

droguerman 20-04-2005 14:48:45

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

luego creas la tabla con un campo calculado
Código:

create table nuevaTabla
 (
 codigo varchar(4),
        nro AS dbo.fun_Numero(codigo)
 )

al hacer select * from nuevaTabla ORDER BY nro; deberías ver el resultado

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

jachguate 20-04-2005 15:47:23

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 '

Hasta luego.

;)


La franja horaria es GMT +2. Ahora son las 23:32:24.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi