Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server 2008 - nicht ganzzahlige Konstante in der ORDER BY-Klausel

Hier ist, was die MSDN Ich muss etwas über Zeichenkonstanten sagen, die gewissermaßen die non-integer constant sind

1) Nicht ganzzahlige Konstanten sind ... Konstanten, die nicht ganzzahlig sind.

Beispiel:'string1' repräsentiert eine String-Konstante

0x01 stellt eine varbinäre Konstante dar

{ts '2015-02-26 06:00:00'} stellt eine datetime-Konstante dar

1.23 repräsentiert eine numerische Konstante

2) Einfache Anführungszeichen werden also verwendet, um eine Zeichenkettenkonstante / Zeichenkettenkonstante aber zu definieren SQL Server erlaubt auch die Verwendung von einfachen Anführungszeichen, die auch als Trennzeichen für die Spaltenkennung verwendet werden:

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

In diesem Zusammenhang ist klar, dass 'Column1' ist eine Spaltenkennung aber bei Verwendung in ORDER BY:ORDER BY 'Column1' es erzeugt Verwirrung, weil SQL Server nicht weiß, ob es ein String-Literal (Zeichenkettenkonstante) oder einen Spaltenbezeichner/Spaltennamen darstellt.

3) SQL Server erlaubt die Verwendung ganzzahliger Konstanten in ORDER BY, also SELECT ColA, ColB, ColC FROM ... ORDER BY 2 . In diesem Fall 2 ist der Index der Spalte ColB . Auch wenn Sie nach ColB sortieren möchten und ColC Sie könnten ORDER BY 2, 3 verwenden . Die Verwendung des Spaltenindex gilt als schlechte Praxis.

4) In diesem Fall würde ich

verwenden
ORDER BY EMP_LAST_NAME + ', ' + EMP_FIRST_NAME