Her er hvad MSDN
har at sige om tegnkonstanten, der på en måde er non-integer constant
1) Ikke-heltalskonstanter er ... konstanter, der ikke er heltal.
Eksempel:'string1'
repræsenterer en strengkonstant
0x01
repræsenterer en varbinær konstant
{ts '2015-02-26 06:00:00'}
repræsenterer en dato-tidskonstant
1.23
repræsenterer en numerisk konstant
2) Så enkelte anførselstegn bruges til at definere en strengkonstanter / tegnstrengkonstanter men SQL Server tillader også at bruge enkelte anførselstegn, brug også som kolonne-id-afgrænser:
SELECT ... expression AS 'Column1'
FROM ...
I denne sammenhæng er det klart, at 'Column1'
er et kolonne-id men når det bruges i ORDER BY :ORDER BY 'Column1'
det skaber forvirring, fordi SQL Server ikke ved, om det repræsenterer en streng-literal (tegnstrengkonstant), eller den repræsenterer en kolonne-id/kolonnenavn.
3) SQL Server tillader at bruge heltalskonstanter i ORDER BY således SELECT ColA, ColB, ColC FROM ... ORDER BY 2
. I dette tilfælde 2
er indekset for kolonne ColB
. Også, hvis du vil sortere efter ColB
og ColC
du kan bruge ORDER BY 2, 3
. Brug af kolonnens indeks anses for at være dårlig praksis.
4) I dette tilfælde ville jeg bruge
ORDER BY EMP_LAST_NAME + ', ' + EMP_FIRST_NAME