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