照合順序
照合順序は、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 演算子の実装のオーバーライドの詳細については、「ユーザー定義関数」を参照してください。
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET