Collation
SQLite usa las secuencias de intercalación al comparar valores de texto para determinar el orden y la igualdad. Puede especificar la intercalación que se va a usar al crear columnas o por operación en consultas SQL. SQLite incluye tres secuencias de intercalación de forma predeterminada.
Collation | Descripción |
---|---|
RTRIM | Ignora los espacios en blanco finales |
NOCASE | No distingue mayúsculas de minúsculas para los caracteres ASCII A-Z |
BINARY | Distingue mayúsculas de minúsculas. Compara los bytes directamente |
Intercalación personalizada
También puede definir secuencias de intercalación propias o invalidar las creadas mediante CreateCollation. En el ejemplo siguiente se muestra cómo invalidar la intercalación NOCASE para admitir caracteres Unicode. El ejemplo de código completo está disponible en 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 (operador)
El operador LIKE de SQLite no respeta las intercalaciones. La implementación predeterminada tiene la misma semántica que la intercalación NOCASE. No distingue mayúsculas de minúsculas para los caracteres ASCII de la A a la Z.
Puede hacer que el operador LIKE distinga mayúsculas de minúsculas con la siguiente instrucción pragma:
PRAGMA case_sensitive_like = 1
Vea Funciones definidas por el usuario para obtener más información sobre cómo invalidar la implementación del operador LIKE.