資料庫安裝時未設定大小寫敏感,但特定查詢需區分大小寫,可在查詢層級使用 COLLATE 子句指定排序規則。
-- 區分大小寫 (CS = Case Sensitive)
SELECT * FROM table WHERE col = 'semye' COLLATE Chinese_PRC_CS_AI;
-- 不區分大小寫 (CI = Case Insensitive)
SELECT * FROM table WHERE col = 'semye' COLLATE Chinese_PRC_CI_AI;
以 Chinese_PRC_CI_AS 為例:
CREATE DATABASE ... COLLATE Chinese_PRC_CI_AS 或 ALTER DATABASE ... COLLATE ... (需單一用戶模式)。col_name VARCHAR(50) COLLATE Chinese_PRC_CS_AS NULL。錯誤:「無法解決 equal to 作業的排序規則衝突」。
-- 於 JOIN 條件指定排序規則
SELECT * FROM db1.dbo.t1 a
INNER JOIN db2.dbo.t2 b ON a.name = b.name COLLATE Chinese_PRC_CI_AI_WS
或修改欄位預設排序規則使兩側一致。