定序

在比較 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 運算子實作的詳細資訊,請參閱使用者定義的函式

另請參閱