Aqui está o que o
MSDN
tenho a dizer sobre constantes de caracteres que são de certa forma a non-integer constant
1) Constantes não inteiras são... constantes que não são números inteiros.
Exemplo:
'string1'
representa uma constante de string 0x01
representa uma constante varbinária {ts '2015-02-26 06:00:00'}
representa uma constante de data e hora 1.23
representa uma constante numérica 2) Portanto, aspas simples são usadas para definir constantes de string / constantes de string de caracteres mas O SQL Server permite também usar aspas simples como delimitador de identificador de coluna:
SELECT ... expression AS 'Column1'
FROM ...
Neste contexto fica claro que
'Column1'
é um identificador de coluna mas quando usado em ORDER BY :ORDER BY 'Column1'
gera confusão porque o SQL Server não sabe se representa um literal de string (constante de string de caracteres) ou representa um identificador de coluna/nome de coluna. 3) SQL Server permite usar constantes inteiras em ORDER BY assim
SELECT ColA, ColB, ColC FROM ... ORDER BY 2
. Neste caso 2
é o índice da coluna ColB
. Além disso, se você quiser classificar por ColB
e ColC
você pode usar ORDER BY 2, 3
. O uso do índice da coluna é considerado uma prática ruim. 4) Neste caso eu usaria
ORDER BY EMP_LAST_NAME + ', ' + EMP_FIRST_NAME