Параметры сортировки
При сравнении текстовых значений для определения порядка и равенства в 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 см. в описании определяемых пользователем функций.