Zde je MSDN musíme říci o znakových konstantách, které jsou v jistém smyslu non-integer constant
1) Neceločíselné konstanty jsou ... konstanty, které nejsou celočíselné.
Příklad:'string1' představuje řetězcovou konstantu
0x01 představuje varbinární konstantu
{ts '2015-02-26 06:00:00'} představuje konstantu data a času
1.23 představuje číselné konstanty
2) Jednoduché uvozovky se tedy používají k definování řetězcových konstant / konstant řetězce znaků ale SQL Server umožňuje také použití jednoduchých uvozovek jako oddělovač identifikátoru sloupce:
SELECT ... expression AS 'Column1'
FROM ...
V tomto kontextu je jasné, že 'Column1' je identifikátor sloupce ale při použití v ORDER BY:ORDER BY 'Column1' generuje to zmatek, protože SQL Server neví, zda představuje řetězcový literál (konstantu řetězce znaků) nebo představuje identifikátor sloupce / název sloupce.
3) SQL Server umožňuje používat celočíselné konstanty v ORDER BY tedy SELECT ColA, ColB, ColC FROM ... ORDER BY 2 . V tomto případě 2 je index sloupce ColB . Také, pokud chcete třídit podle ColB a ColC můžete použít ORDER BY 2, 3 . Použití indexu sloupce je považováno za špatný postup.
4) V tomto případě bych použil
ORDER BY EMP_LAST_NAME + ', ' + EMP_FIRST_NAME