Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

sql сървър 2008 - константа, която не е цяло число в клаузата ORDER BY

Ето какво MSDN трябва да кажа за символна константа, която в известен смисъл е non-integer constant

1) Нецелите константи са ... константи, които не са цяло число.

Пример:'string1' представлява низова константа

0x01 представлява varbinary константа

{ts '2015-02-26 06:00:00'} представлява константа за дата и час

1.23 представлява числова константа

2) Така че единичните кавички се използват за дефиниране на низови константи / символни низови константи но SQL Server позволява също да се използват единични кавички като разделител на идентификатор на колона:

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

В този контекст е ясно, че 'Column1' е идентификатор на колонано когато се използва в ORDER BY :ORDER BY 'Column1' генерира объркване, защото SQL Server не знае дали представлява низов литерал (константа на символен низ), или представлява идентификатор на колона/име на колона.

3) SQL Server позволява използването на целочислени константи в ORDER BY по този начин SELECT ColA, ColB, ColC FROM ... ORDER BY 2 . В този случай 2 е индексът на колона ColB . Освен това, ако искате да сортирате по ColB и ColC можете да използвате ORDER BY 2, 3 . Използването на индекс на колона се счита за лоша практика.

4) В този случай бих използвал

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. SQL разделя 2 стойности от 2 заявки

  2. Откриване на последователни диапазони от дати с помощта на SQL

  3. Извършване на регулярни изрази (замяна) в SQL заявка

  4. SQL заявка за извличане на данните от две таблици с не в състояние

  5. SQL Server 2008 R2 блокира в режим за един потребител