sql >> Base de Datos >  >> RDS >> Sqlserver

servidor sql 2008 - constante no entera en la cláusula ORDER BY

Esto es lo que MSDN tengo que decir acerca de las constantes de carácter que son, en cierto sentido, las non-integer constant

1) Las constantes no enteras son... constantes que no son números enteros.

Ejemplo:'string1' representa una constante de cadena

0x01 representa una constante varbinary

{ts '2015-02-26 06:00:00'} representa una constante de fecha y hora

1.23 representa una constante numérica

2) Entonces, las comillas simples se usan para definir constantes de cadena / constantes de cadena de caracteres pero SQL Server también permite usar comillas simples como delimitador de identificador de columna:

SELECT ... expression AS 'Column1'
FROM ...

En este contexto es claro que 'Column1' es un identificador de columna pero cuando se usa en ORDER BY:ORDER BY 'Column1' genera confusión porque SQL Server no sabe si representa un literal de cadena (constante de cadena de caracteres) o representa un identificador de columna/nombre de columna.

3) SQL Server permite usar constantes enteras en ORDER BY, por lo tanto SELECT ColA, ColB, ColC FROM ... ORDER BY 2 . En este caso 2 es el índice de la columna ColB . Además, si desea ordenar por ColB y ColC podrías usar ORDER BY 2, 3 . El uso del índice de la columna se considera una mala práctica.

4) En este caso usaría

ORDER BY EMP_LAST_NAME + ', ' + EMP_FIRST_NAME