單欄位操作(ORDER BY x、WHERE x = x、DISTINCT x)校對顯然為「欄位 x 的校對」。
標準 SQL 採用「可強制性」規則,數值越小優先級越高:
| 可強制性值 | 來源 |
|---|---|
| 0 | 顯式 COLLATE 子句(不可強制) |
| 1 | 不同校對字符串連接結果 |
| 2 | 欄位校對 |
| 3 | 系統常數(USER()、VERSION()) |
| 4 | 字面值字面量 |
| 5 | NULL 或派生自 NULL 的表達式 |
column1 = 'A' -- 用 column1 校對 (2 vs 4) column1 = 'A' COLLATE x -- 用 'A' 校對 (2 vs 0) column1 COLLATE x = 'A' COLLATE y -- 錯誤 (0 vs 0 但校對不同)
SELECT COERCIBILITY('A' COLLATE latin1_swedish_ci); -- 0
SELECT COERCIBILITY(VERSION()); -- 3
SELECT COERCIBILITY('A'); -- 4
註:無系統常數或可忽略強制性。函數如 USER() 可強制性為 2 而非 3,字面值為 3 而非 4(舊版本差異)。