在比較 TEXT 值以判斷順序和相等時,SQLite 會使用定序序列。 您可以在建立資料行時或在 SQL 查詢中針對每個操作,指定要使用的定序。 SQLite 預設包含三個排序規則。
排序 | 說明 |
---|---|
RTRIM | 忽略尾端空格符 |
不區分大小寫 | 處理 ASCII 字元 A-Z 時不區分大小寫 |
二進制 | 區分大小寫。 直接比較位元組 |
自訂排序
您也可以定義自己的定序序列,或使用CreateCollation 覆寫內建序列。 下列範例示範覆寫 NOCASE 定序以支援 Unicode 字元。 GitHub 上提供 完整的範例程序代碼 。
connection.CreateCollation("NOCASE", (x, y) => string.Compare(x, y, ignoreCase: true));
var queryCommand = connection.CreateCommand();
queryCommand.CommandText =
@"
SELECT count()
FROM greek_letter
WHERE value = 'λ' COLLATE NOCASE
";
var oCount = queryCommand.ExecuteScalar();
var count = (oCount is not null) ? (int)oCount : -1;
Like 運算子
SQLite 中的 LIKE 運算元不接受定序。 默認實作的語意與NOCASE定序相同。 只有 ASCII 字元 A 到 Z 不區分大小寫。
您可以使用下列 pragma 語句,輕易地使 LIKE 運算子區分大小寫:
PRAGMA case_sensitive_like = 1
如需有關覆寫 LIKE 運算子實作的詳細資訊,請參閱 使用者定義函數。