定序
在比較 TEXT 值以判斷順序和相性等時,SQLite 會使用定序序列。 您可以指定在 SQL 查詢中建立資料行或個別作業時要使用的定序。 SQLite 預設包含三個定序序列。
定序 | 描述 |
---|---|
RTRIM | 忽略尾端空白字元 |
NOCASE | ASCII 字元 A-Z 不區分大小寫 |
BINARY | 區分大小寫。 直接比較位元組 |
自訂定序
您也可以定義自己的定序序列,或使用 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 運算子實作的詳細資訊,請參閱使用者定義的函式。