Ecco cosa è il MSDN
devo dire sulle costanti di carattere che sono in un certo senso la non-integer constant
1) Le costanti non intere sono ... costanti che non sono numeri interi.
Esempio:'string1'
rappresenta una costante stringa
0x01
rappresenta una costante varbina
{ts '2015-02-26 06:00:00'}
rappresenta una costante di data e ora
1.23
rappresenta una costante numerica
2) Quindi le virgolette singole vengono utilizzate per definire costanti di stringa / costanti di stringa di caratteri ma SQL Server consente inoltre di utilizzare le virgolette singole anche come delimitatore dell'identificatore di colonna:
SELECT ... expression AS 'Column1'
FROM ...
In questo contesto è chiaro che 'Column1'
è un identificatore di colonna ma se utilizzato in ORDER BY :ORDER BY 'Column1'
genera confusione perché SQL Server non sa se rappresenta una stringa letterale (costante di stringa di caratteri) o rappresenta un identificatore di colonna/nome di colonna.
3) SQL Server consente di utilizzare costanti intere in ORDER BY quindi SELECT ColA, ColB, ColC FROM ... ORDER BY 2
. In questo caso 2
è l'indice della colonna ColB
. Inoltre, se vuoi ordinare per ColB
e ColC
potresti usare ORDER BY 2, 3
. L'utilizzo dell'indice della colonna è considerato una cattiva pratica.
4) In questo caso userei
ORDER BY EMP_LAST_NAME + ', ' + EMP_FIRST_NAME