Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

sql server 2008 - constante não inteira na cláusula ORDER BY


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