Сопоставление

Сортировка последовательностей используется SQLite при сравнении значений TEXT для определения порядка и равенства. Можно указать, какие параметры сортировки необходимо использовать при создании столбцов или для каждой операции в запросах SQL. SQLite включает три последовательности сортировки по умолчанию.

Сопоставление Описание
RTRIM Игнорирует конечные пробелы
NOCASE Без учета регистра для ASCII-символов от A до Z
БИНАРНЫЙ Зависящий от регистра. Сравнивает байты напрямую

Настраиваемая сортировка

Вы также можете определить собственные последовательности сортировки или переопределить встроенные, используя функцию CreateCollation. В следующем примере показано переопределение параметров сортировки 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

Оператор LIKE в SQLite не учитывает правила сопоставления. Реализация по умолчанию имеет ту же семантику, что и колляция NOCASE. Регистр игнорируется только для символов ASCII от A до Z.

Вы можете легко сделать оператор LIKE чувствительным к регистру, используя следующую инструкцию pragma:

PRAGMA case_sensitive_like = 1

Дополнительные сведения о переопределении реализации оператора LIKE см. в определяемых пользователем функциях .

См. также