sql >> Databáze >  >> RDS >> Sqlserver

sql server 2008 - neceločíselná konstanta v klauzuli ORDER BY

Zde je MSDN musíme říci o znakových konstantách, které jsou v jistém smyslu non-integer constant

1) Neceločíselné konstanty jsou ... konstanty, které nejsou celočíselné.

Příklad:'string1' představuje řetězcovou konstantu

0x01 představuje varbinární konstantu

{ts '2015-02-26 06:00:00'} představuje konstantu data a času

1.23 představuje číselné konstanty

2) Jednoduché uvozovky se tedy používají k definování řetězcových konstant / konstant řetězce znaků ale SQL Server umožňuje také použití jednoduchých uvozovek jako oddělovač identifikátoru sloupce:

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

V tomto kontextu je jasné, že 'Column1' je identifikátor sloupce ale při použití v ORDER BY:ORDER BY 'Column1' generuje to zmatek, protože SQL Server neví, zda představuje řetězcový literál (konstantu řetězce znaků) nebo představuje identifikátor sloupce / název sloupce.

3) SQL Server umožňuje používat celočíselné konstanty v ORDER BY tedy SELECT ColA, ColB, ColC FROM ... ORDER BY 2 . V tomto případě 2 je index sloupce ColB . Také, pokud chcete třídit podle ColB a ColC můžete použít ORDER BY 2, 3 . Použití indexu sloupce je považováno za špatný postup.

4) V tomto případě bych použil

ORDER BY EMP_LAST_NAME + ', ' + EMP_FIRST_NAME



  1. Postgresql - Regex rozdělený csv řádek s potenciálními uvozovkami

  2. Jak získám ID řádků, které mají hodnoty MAX a MIN v SQL

  3. Doporučené postupy pro zálohování MySQL

  4. MySQL – připojení na základě data