Regole di confronto
Le sequenze di confronto vengono usate da SQLite durante il confronto di valori TEXT per determinare l'ordine e l'uguaglianza. È possibile specificare le regole di confronto da usare durante la creazione di colonne o per operazione nelle query SQL. SQLite include tre sequenze di confronto per impostazione predefinita.
Regole di confronto | Descrizione |
---|---|
RTRIM | Ignora gli spazi vuoti finali |
NOCASE | Senza distinzione tra maiuscole e minuscole per i caratteri ASCII A-Z |
BINARY | Con distinzione tra maiuscole e minuscole. Confronta direttamente i byte |
Regole di confronto personalizzate
È anche possibile definire sequenze di confronto personalizzate o eseguire l'override di quelle predefinite usando CreateCollation. Nell'esempio seguente viene illustrato l'override delle regole di confronto NOCASE per supportare i caratteri Unicode. Il codice di esempio completo è disponibile su 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;
Operatore Like
L'operatore LIKE in SQLite non rispetta le regole di confronto. L'implementazione predefinita ha la stessa semantica delle regole di confronto NOCASE. Non fa distinzione tra maiuscole e minuscole solo per i caratteri ASCII da A a Z.
È possibile fare in modo che l'operatore LIKE faccia facilmente distinzione tra maiuscole e minuscole usando l'istruzione pragma seguente:
PRAGMA case_sensitive_like = 1
Per informazioni dettagliate sull'override dell'implementazione dell'operatore LIKE, vedere Funzioni definite dall'utente.