Oto, co MSDN
muszę powiedzieć o stałych znakowych, które są w pewnym sensie non-integer constant
1) Stałe niecałkowite to ... stałe, które nie są liczbą całkowitą.
Przykład:'string1'
reprezentuje stałą łańcuchową
0x01
reprezentuje stałą varbinary
{ts '2015-02-26 06:00:00'}
reprezentuje stałą daty i godziny
1.23
reprezentuje stałe liczbowe
2) Tak więc pojedyncze cudzysłowy są używane do zdefiniowania stałych ciągu znaków / stałych ciągu znaków ale SQL Server pozwala również na użycie pojedynczych cudzysłowów jako separatora identyfikatora kolumny:
SELECT ... expression AS 'Column1'
FROM ...
W tym kontekście jasne jest, że 'Column1'
to identyfikator kolumny ale w przypadku użycia w ORDER BY :ORDER BY 'Column1'
powoduje to zamieszanie, ponieważ SQL Server nie wie, czy reprezentuje literał ciągu znaków (stała ciągu znaków), czy reprezentuje identyfikator kolumny / nazwę kolumny.
3) SQL Server pozwala na użycie stałych całkowitych w ORDER BY, stąd SELECT ColA, ColB, ColC FROM ... ORDER BY 2
. W tym przypadku 2
to indeks kolumny ColB
. Ponadto, jeśli chcesz sortować według ColB
i ColC
możesz użyć ORDER BY 2, 3
. Używanie indeksu kolumny jest uważane za złą praktykę.
4) W tym przypadku użyłbym
ORDER BY EMP_LAST_NAME + ', ' + EMP_FIRST_NAME