照合順序

照合順序は、SQLite によって TEXT 値を比較して順序と等価性を判断するときに使用されます。 SQL クエリで列の作成時または操作ごとに、使用する照合順序を指定できます。 SQLite には、既定で 3 つの照合順序があります。

照合順序 説明
RTRIM 末尾の空白を無視します
NOCASE ASCII 文字 A から Z の大文字と小文字を区別しません
BINARY 大文字と小文字を区別します。 バイトを直接比較します

カスタム照合順序

CreateCollation を使用して、独自の照合シーケンスを定義したり、組み込みの照合順序をオーバーライドしたりすることもできます。 次の例では、Unicode 文字をサポートするように NOCASE 照合順序をオーバーライドする方法を示しています。 コード サンプル全体は 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 演算子の実装のオーバーライドの詳細については、「ユーザー定義関数」を参照してください。

関連項目