Đâ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 ColB
và ColC
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