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