sql >> Database >  >> RDS >> Sqlserver

sql server 2008 - niet-gehele constante in ORDER BY-clausule

Dit is wat de MSDN te zeggen hebben over tekenconstante die in zekere zin de non-integer constant . zijn

1) Niet-gehele constanten zijn ... constanten die geen geheel getal zijn.

Voorbeeld:'string1' vertegenwoordigt een tekenreeksconstante

0x01 vertegenwoordigt een varbinaire constante

{ts '2015-02-26 06:00:00'} vertegenwoordigt een datetime-constante

1.23 vertegenwoordigt een numerieke constanten

2) Dus enkele aanhalingstekens worden gebruikt om een ​​tekenreeksconstanten / tekenreeksconstanten te definiëren maar SQL Server maakt het ook mogelijk om enkele aanhalingstekens te gebruiken, ook als scheidingsteken voor kolom-ID's:

SELECT ... expression AS 'Column1'
FROM ...

In deze context is duidelijk dat 'Column1' is een kolom-ID maar bij gebruik in ORDER BY :ORDER BY 'Column1' het genereert verwarring omdat SQL Server niet weet of het een letterlijke tekenreeks (tekenreeksconstante) of een kolom-ID / kolomnaam vertegenwoordigt.

3) SQL Server maakt het mogelijk om integer-constanten te gebruiken in ORDER BY, dus SELECT ColA, ColB, ColC FROM ... ORDER BY 2 . In dit geval 2 is de index van kolom ColB . Ook als u wilt sorteren op ColB en ColC je zou kunnen gebruiken ORDER BY 2, 3 . Het gebruik van de index van de kolom wordt als een slechte gewoonte beschouwd.

4) In dit geval zou ik

. gebruiken
ORDER BY EMP_LAST_NAME + ', ' + EMP_FIRST_NAME



  1. MySQL-sleutelwoorden gebruiken in een zoekopdracht?

  2. Poortwaarde wijzigen configureApplicationServer-kenmerk Worklight

  3. Alternatief van sys_refcursor

  4. Hernoem sommige tabellen naar Tabelnaam + DDMMJJJJ