Här är vad MSDN
måste säga om teckenkonstanten som på sätt och vis är non-integer constant
1) Icke-heltalskonstanter är ... konstanter som inte är heltal.
Exempel:'string1'
representerar en strängkonstant
0x01
representerar en varbinär konstant
{ts '2015-02-26 06:00:00'}
representerar en datetime-konstant
1.23
representerar en numerisk konstant
2) Så enstaka citattecken används för att definiera en strängkonstanter / teckensträngskonstanter men SQL Server tillåter också att använda enstaka citattecken, använd också som kolumnidentifierare:
SELECT ... expression AS 'Column1'
FROM ...
I detta sammanhang är tydligt att 'Column1'
är en kolumnidentifierare men när det används i ORDER BY :ORDER BY 'Column1'
den skapar förvirring eftersom SQL Server inte vet om den representerar en strängliteral (teckensträngskonstant) eller om den representerar en kolumnidentifierare/kolumnnamn.
3) SQL Server tillåter att använda heltalskonstanter i ORDER BY alltså SELECT ColA, ColB, ColC FROM ... ORDER BY 2
. I det här fallet 2
är indexet för kolumnen ColB
. Dessutom, om du vill sortera efter ColB
och ColC
du kan använda ORDER BY 2, 3
. Användning av kolumns index anses vara dålig praxis.
4) I det här fallet skulle jag använda
ORDER BY EMP_LAST_NAME + ', ' + EMP_FIRST_NAME