Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

sql server 2008 - stała niecałkowita w klauzuli ORDER BY

Oto, co MSDN muszę powiedzieć o stałych znakowych, które są w pewnym sensie non-integer constant

1) Stałe niecałkowite to ... stałe, które nie są liczbą całkowitą.

Przykład:'string1' reprezentuje stałą łańcuchową

0x01 reprezentuje stałą varbinary

{ts '2015-02-26 06:00:00'} reprezentuje stałą daty i godziny

1.23 reprezentuje stałe liczbowe

2) Tak więc pojedyncze cudzysłowy są używane do zdefiniowania stałych ciągu znaków / stałych ciągu znaków ale SQL Server pozwala również na użycie pojedynczych cudzysłowów jako separatora identyfikatora kolumny:

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

W tym kontekście jasne jest, że 'Column1' to identyfikator kolumny ale w przypadku użycia w ORDER BY :ORDER BY 'Column1' powoduje to zamieszanie, ponieważ SQL Server nie wie, czy reprezentuje literał ciągu znaków (stała ciągu znaków), czy reprezentuje identyfikator kolumny / nazwę kolumny.

3) SQL Server pozwala na użycie stałych całkowitych w ORDER BY, stąd SELECT ColA, ColB, ColC FROM ... ORDER BY 2 . W tym przypadku 2 to indeks kolumny ColB . Ponadto, jeśli chcesz sortować według ColB i ColC możesz użyć ORDER BY 2, 3 . Używanie indeksu kolumny jest uważane za złą praktykę.

4) W tym przypadku użyłbym

ORDER BY EMP_LAST_NAME + ', ' + EMP_FIRST_NAME



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tabela historii programu SQL Server — wypełnianie za pomocą SP lub wyzwalacza?

  2. =* operator w sql

  3. Czy zapytania ANSI JOIN i inne niż ANSI JOIN będą działać inaczej?

  4. Różnica między odczytem zatwierdzonym a odczytem powtarzalnym

  5. SQL Server podzielił plik CSV na wiele wierszy