sql >> Database teknologi >  >> RDS >> Sqlserver

sql server 2008 - ikke-heltalskonstant i ORDER BY-klausul

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



  1. Bruger Oracle kortslutningsevaluering?

  2. Hvordan forespørger jeg, om der findes et databaseskema

  3. Forskellen mellem sprog sql og sprog plpgsql i PostgreSQL-funktioner

  4. Hvad er SQL-kommandoen til at returnere feltnavnene på en tabel?