Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

sql server 2008 - hằng số không phải là số nguyên trong Mệnh đề ORDER BY

Đây là những gì MSDN phải nói về hằng số ký tự có nghĩa là non-integer constant

1) Hằng số không nguyên là ... hằng số không phải là số nguyên.

Ví dụ:'string1' đại diện cho một hằng số chuỗi

0x01 đại diện cho một hằng số varbinary

{ts '2015-02-26 06:00:00'} đại diện cho một hằng số ngày giờ

1.23 đại diện cho một hằng số

2) Vì vậy, dấu ngoặc kép được sử dụng để xác định hằng số chuỗi / hằng số chuỗi ký tự nhưng SQL Server cũng cho phép sử dụng dấu ngoặc kép đơn cũng được sử dụng làm dấu phân tách mã định danh cột:

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

Trong ngữ cảnh này, rõ ràng là 'Column1' là số nhận dạng cột nhưng khi được sử dụng trong ORDER BY:ORDER BY 'Column1' nó tạo ra sự nhầm lẫn vì SQL Server không biết nó đại diện cho một chuỗi ký tự (hằng số chuỗi ký tự) hay nó đại diện cho một định danh cột / tên cột.

3) SQL Server cho phép sử dụng hằng số nguyên trong ORDER BY do đó SELECT ColA, ColB, ColC FROM ... ORDER BY 2 . Trong trường hợp này 2 là chỉ mục của cột ColB . Ngoài ra, nếu bạn muốn sắp xếp theo ColBColC bạn có thể sử dụng ORDER BY 2, 3 . Việc sử dụng chỉ mục của cột được coi là hành vi xấu.

4) Trong trường hợp này, tôi sẽ sử dụng

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. Nhóm và tổng hợp dữ liệu hàng thành cột trong MS-SQL?

  2. Làm thế nào để thực thi một thủ tục được lưu trữ MSSQL với Thư viện PHP ADOdb?

  3. Cách tắt tất cả các Ràng buộc Kiểm tra trong Cơ sở dữ liệu SQL Server - Hướng dẫn SQL Server / TSQL Phần 87

  4. LOG () Ví dụ trong SQL Server

  5. Trả về một giá trị và một tập hợp kết quả từ asp cổ điển thủ tục được lưu trữ