SQL Server - Ordenar codigo alfanumerico - SQL Server

 
Vista:

Ordenar codigo alfanumerico - SQL Server

Publicado por Luigy Miranda (2 intervenciones) el 03/09/2021 03:21:35
Buen día compañeros,

Tengo una consulta, al momento de ordenar una columna que tiene un código alfanumérico (Varchar) se ordena de forma distinta a como me ordena esa misma columna en un excel. (Tomando en cuenta que se las ordena de A hasta la Z)

Ejemplo de como lo ordena Excel A hasta la Z:

98125E0000002
98124E0000003
98123E0000005
98124E0000007
98125E0000007
98123E0000008
98125E0000008
98123E0000009
98124E0000009
98123E0000010
98124E0000010
98125E0000010
98125E0000011
98100A0000010A
98100B0000001A
98100B0000002A
98100B0000003A
98100B0000005A
98100C0000002A
98100C0000002A
98100C0000003A
98100C0000005A
98100C0000005A
98100C0000006A
98100C0000007A
98100C0000007A
98100C0000008A
98100D0000001A
98100D0000002A
98100D0000003A
98100D0000005A
98100D0000006A
98100D0000008A
98100D0000009A
98100D0000012A
98100D0000014A
98100D0000017A
98100D0000019A
98100D0000020
98100E0000003A
98100E0000004A
98100E0000005A
98100F0000001A
98100F0000001A
98100F0000002A
98100F0000003A
98100F0000007A
98100F0000011A
98100G0000001A
98100G0000007A
98100G0000007A
98100G0000009
98100H0000005
98100H0000006
98100I0000001A
98100I0000003A
98100I0000004A
98100I024R008
98100J0000003A
98100J0000005A
98100J0000006A
98100K0000004A
98100K0000005A
98123A0000003
98123A0000006
98123A0000009
98123D0000003
98123D0000007
98123D0000008
98123D0000017
98123D0000019
98123D0000020
98123D0000023
98123F0000004
98123F0000006
98123F0000006A
98123F0000009
98123F0000013
98123F0000024
98123G0000005
98123G0000007
98123G0000010
98123G0000012
98123G0000024
98124A0000001
98124A0000010
98124D0000004
98124D0000008
98124F0000003
98124F0000005
98124G0000005
98124G0000005
98124H0000007
98124H0000008
98124H0000008
98124K0000001
98124K0000002
98125A0000003
98125A0000003
98125A0000007
98125A0000008
98125A0000008
98125A0000010
98125A0000010
98125B0000005
98125C0000002
98125C0000005
98125C0000013
98125D0000002
98125D0000004
98125D0000007
98125D0000010
98125D0000011
98125D0000013
98125D0000015
98125D0000017
98125D0000022
98125F0000004
98125F0000006
98125F0000006
98125F0000008
98125F0000012
98125G0000002
98125G0000003
98125G0000005
98125G0000007



Ejemplo de como me lo ordena Sql Server con el siguiente codigo:


SELECT COD_CON FROM usuarios where SECDES like 'MODULAR' ORDER BY COD_CON ASC

98100A0000010A
98100B0000001A
98100B0000002A
98100B0000003A
98100B0000005A
98100C0000002A
98100C0000002A
98100C0000003A
98100C0000005A
98100C0000005A
98100C0000006A
98100C0000007A
98100C0000007A
98100C0000008A
98100D0000001A
98100D0000002A
98100D0000003A
98100D0000005A
98100D0000006A
98100D0000008A
98100D0000009A
98100D0000012A
98100D0000014A
98100D0000017A
98100D0000019A
98100D0000020
98100E0000003A
98100E0000004A
98100E0000005A
98100F0000001A
98100F0000001A
98100F0000002A
98100F0000003A
98100F0000007A
98100F0000011A
98100G0000001A
98100G0000007A
98100G0000007A
98100G0000009
98100H0000005
98100H0000006
98100I0000001A
98100I0000003A
98100I0000004A
98100I024R008
98100J0000003A
98100J0000005A
98100J0000006A
98100K0000004A
98100K0000005A
98123A0000003
98123A0000006
98123A0000009
98123D0000003
98123D0000007
98123D0000008
98123D0000017
98123D0000019
98123D0000020
98123D0000023
98123E0000005
98123E0000008
98123E0000009
98123E0000010
98123F0000004
98123F0000006
98123F0000006A
98123F0000009
98123F0000013
98123F0000024
98123G0000005
98123G0000007
98123G0000010
98123G0000012
98123G0000024
98124A0000001
98124A0000010
98124D0000004
98124D0000008
98124E0000003
98124E0000007
98124E0000009
98124E0000010
98124F0000003
98124F0000005
98124G0000005
98124G0000005
98124H0000007
98124H0000008
98124H0000008
98124K0000001
98124K0000002
98125A0000003
98125A0000003
98125A0000007
98125A0000008
98125A0000008
98125A0000010
98125A0000010
98125B0000005
98125C0000002
98125C0000005
98125C0000013
98125D0000002
98125D0000004
98125D0000007
98125D0000010
98125D0000011
98125D0000013
98125D0000015
98125D0000017
98125D0000022
98125E0000002
98125E0000007
98125E0000008
98125E0000010
98125E0000011
98125F0000004
98125F0000006
98125F0000006
98125F0000008
98125F0000012
98125G0000002
98125G0000003
98125G0000005
98125G0000007



De antemano gracias por su ayuda y su apoyo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Ordenar codigo alfanumerico - SQL Server

Publicado por Isaias (4416 intervenciones) el 03/09/2021 17:00:19
Perdona, ¿Cual seria tu peticion?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ordenar codigo alfanumerico - SQL Server

Publicado por Luigy Miranda (2 intervenciones) el 03/09/2021 17:24:57
Buen día,
Un gusto saludarle Isaias!

Ordenar de la misma forma que lo hace el Excel pero en Sql Server.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ordenar codigo alfanumerico - SQL Server

Publicado por tpa10 (4 intervenciones) el 08/09/2021 05:32:27
En Excel hay dos tipos de ordenacion, numérica y alfanumérica.
En tu caso veo que has elegido la ordenación numérica del excel.
Se puede comprobar porque los primeros valores excel tienen una "E" que significa exponenciacion (de 10 elevado a n).
Es decir ordena primero los valores numéricos y luego el resto ascendentemente.

En mi opinión creo que es una mala decisión...
es mejor la ordenación alfanumérica de excel que coincide completamente con la ordenacion SQL Server.

EJEMPLO:
Como ejemplo voy a utilizar las líneas 12 y 13 del primer listado excel.
98125E0000011
98100A0000010A
Supongamos en una hoja excel que ...
A1 = "ORDENNUMERICO", A2 = 98125E0000011 y A3 = 98100A0000010A, B1 = "ORDENALFANUMERICO"
Asignamos formulas que lo que hacen es convertir un valor numérico en un texto al concatenar una cadena vacía como prefijo
B2 = "" & A2
B3 = "" & A3
Ahora seleccionamos el rango A1..B3.
Si lo ordenamos por la columna A en orden numérico se produce el resultado del primer listado (orden numerico excel)
Si lo ordenamos por la columna B en orden alfanumérico, se produce el resultado del segundo listado (orden alfanumerico excel o sql)

Espero haberte convencido con el razonamiento. Suerte con ello.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar