Đối chiếu có thể được chỉ định ở cấp máy chủ, cấp cơ sở dữ liệu, cấp cột, cấp biểu thức và cấp định danh. Cần có một phương pháp khác cho mỗi phương thức này.
Đối chiếu cấp độ máy chủ
Dưới đây là cách tìm đối chiếu cấp máy chủ:
SELECT CONVERT (varchar, SERVERPROPERTY('collation')) AS 'Server Collation';
Điều này trả về đối chiếu như sau:
Server Collation ---------------------------- SQL_Latin1_General_CP1_CI_AS
Bạn cũng có thể sử dụng sp_helpsort
thủ tục được lưu trữ để trả về đối chiếu mặc định cho máy chủ:
EXECUTE sp_helpsort;
Điều này trả về đối chiếu như sau:
Server default collation ---------------------------- Latin1-General, case-insensitive, accent-sensitive, kanatype-insensitive, width-insensitive for Unicode Data, SQL Server Sort Order 52 on Code Page 1252 for non-Unicode Data
Đối chiếu cấp độ cơ sở dữ liệu
Chạy truy vấn sau để trả về đối chiếu của một cơ sở dữ liệu cụ thể. WHERE
mệnh đề cho phép bạn thu hẹp kết quả xuống / cơ sở dữ liệu mà bạn quan tâm:
SELECT name, collation_name FROM sys.databases WHERE name = 'Music';
Điều này dẫn đến một cái gì đó như thế này:
name collation_name ----- ---------------------------- Music SQL_Latin1_General_CP1_CI_AS
Trong trường hợp này, chúng tôi đã chỉ định cơ sở dữ liệu có tên Music
.
Bạn cũng có thể sử dụng DATABASEPROPERTYEX()
hàm trả về đối chiếu mặc định cho cơ sở dữ liệu:
SELECT DATABASEPROPERTYEX('Music', 'Collation') AS Collation;
Đối chiếu mức cột
Đối chiếu cũng có thể được chỉ định ở cấp cột. Để tìm hiểu đối chiếu mà một cột cụ thể sử dụng, hãy chạy truy vấn đối với sys.columns
. Như thế này:
SELECT name, collation_name FROM sys.columns WHERE name = N'ArtistName';
Điều này dẫn đến một cái gì đó như thế này:
name collation_name ---------- ---------------------------- ArtistName SQL_Latin1_General_CP1_CI_AS
Đối chiếu cấp độ biểu thức và mã định danh
Đối chiếu có thể được áp dụng cho biểu thức chuỗi ký tự để áp dụng ghép đối chiếu. Ví dụ:bạn có thể sử dụng COLLATE
mệnh đề trong SELECT
câu lệnh để chỉ định đối chiếu sẽ được sử dụng. Như thế này:
USE Music; SELECT ArtistId, ArtistName FROM Artists ORDER BY ArtistName COLLATE Latin1_General_CI_AI;
Đối chiếu đó sử dụng CI
để phân biệt chữ hoa chữ thường và AI
vì không nhạy cảm.
Chúng tôi có thể thay đổi điều đó thành CS
phân biệt chữ hoa chữ thường và AS
đối với phân biệt trọng âm và kết quả truy vấn có thể được sắp xếp khác nhau (tùy thuộc vào dữ liệu):
USE Music; SELECT ArtistId, ArtistName FROM Artists ORDER BY ArtistName COLLATE Latin1_General_CS_AS;
Vì vậy, điều này cho phép bạn ghi đè đối chiếu được áp dụng ở cấp độ cơ sở dữ liệu hoặc cột khi chạy truy vấn.