Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Detalle con Ordenacion

Estas en el tema de Detalle con Ordenacion en el foro de SQL Server en Foros del Web. Estoy ordenando un listado, para mi sorpresa SQL SERVER considera la letra 'Z' mayor a cualquier caracter ascii, por ejemplo: 'Z' es mayor que 'Ñ' ...
  #1 (permalink)  
Antiguo 06/04/2011, 12:04
Avatar de otreblanc  
Fecha de Ingreso: mayo-2005
Ubicación: Chiapas, la última frontera...
Mensajes: 73
Antigüedad: 14 años, 10 meses
Puntos: 0
Detalle con Ordenacion

Estoy ordenando un listado, para mi sorpresa SQL SERVER considera la letra 'Z' mayor a cualquier caracter ascii, por ejemplo: 'Z' es mayor que 'Ñ' y en el juego de caracteres ascii es al reves: 'Ñ'(165) es mayor a 'Z'(90).

Si no me creen, ejecuten este query:
Código SQL:
Ver original
  1. DECLARE @tmp_palabras TABLE (
  2.     palabra VARCHAR(32)
  3. )
  4.  
  5. DECLARE @conta INT
  6. SET @conta=0
  7.  
  8. while @conta<= 255
  9. BEGIN
  10.     INSERT INTO @tmp_palabras
  11.     SELECT CHAR(@conta)+' -PALABRA- '+CAST(@conta AS VARCHAR)
  12.    
  13.     SET @conta=@conta+1
  14. END
  15.  
  16. SELECT *
  17. FROM @tmp_palabras
  18. ORDER BY palabra

Disculpen mi pregunta pero a que se debe??? Alguien sabe como decirle a SQL server que considere el valor del codigo Ascii al momento de la ordenacion?? a fin de muestre que 'Ñ' es mayor a 'Z'
  #2 (permalink)  
Antiguo 06/04/2011, 12:17
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 12 años, 8 meses
Puntos: 180
Respuesta: Detalle con Ordenacion

Y porque no ordenarlo por su valor ASCII

SELECT * FROM @tmp_palabras ORDER BY ascii(left(palabra,1))
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 06/04/2011, 12:31
Avatar de otreblanc  
Fecha de Ingreso: mayo-2005
Ubicación: Chiapas, la última frontera...
Mensajes: 73
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Detalle con Ordenacion

Muchas gracias por tu pronta respuesta, esta perfecta.

También encontré la solución siguiente, si en algún momento lo requieren:

... ORDER BY palabra latin1_general_bin

De esta forma va realizar la ordenación de acuerdo al Código Ascii

Etiquetas: detalle, ordenacion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:06.