Collation

As sequências de agrupamento são usadas pelo SQLite ao comparar valores de TEXT para determinar a ordem e a igualdade. Você pode especificar qual agrupamento usar ao criar colunas ou por operação em consultas SQL. O SQLite inclui três sequências de agrupamento por padrão.

Collation Descrição
RTRIM Ignora espaços em branco à direita
NOCASE Não diferencia maiúsculas de minúsculas para caracteres ASCII A-Z
BINARY Diferenciam maiúsculas de minúsculas. Compara bytes diretamente

Agrupamento personalizado

Você também pode definir suas próprias sequências de agrupamento ou substituir as internas usando CreateCollation. O exemplo a seguir mostra a substituição do agrupamento NOCASE para dar suporte a caracteres Unicode. O código de exemplo completo está disponível no 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;

Operador Like

O operador LIKE no SQLite não respeita agrupamentos. A implementação padrão tem a mesma semântica que o agrupamento NOCASE. Não diferencia maiúsculas de minúsculas apenas para os caracteres ASCII de A a Z.

Você pode facilmente diferenciar maiúsculas de minúsculas do operador LIKE usando a seguinte instrução pragma:

PRAGMA case_sensitive_like = 1

Consulte Funções definidas pelo usuário para obter detalhes sobre como substituir a implementação do operador LIKE.

Confira também