Параметры сортировки

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

Параметры сортировки Description
RTRIM Игнорирует конечные пробелы
NOCASE Без учета регистра для символов A–Z в кодировке ASCII
BINARY С учетом регистра. Сравнивает байты напрямую

Настраиваемые параметры сортировки

Вы можете определить собственные последовательности сортировки или переопределить встроенные, используя 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. Регистр не учитывается для символов A–Z в кодировке ASCII.

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

PRAGMA case_sensitive_like = 1

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

См. также