Condividi tramite


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.

Vedi anche