Che cosa significa la parola chiave COLLATE fare durante la creazione di un indice di SQLite?
Domanda
Secondo il sqlite3 documentazione ,
La clausola COLLATE dopo ogni nome colonna definisce una collazione sequenza utilizzata per i testi nella colonna. La sequenza predefinita di collazione è la sequenza di collazione definito per che colonna della tabella CREATE dichiarazione. O se nessuna sequenza di collazione altrimenti definito, incorporato è usato BINARIO sequenza di ordinamento.
Che cosa fa un sequenza di collazione fare, e quello che è un sequenza di confronto binario?
Soluzione
E 'il modo in cui gli ordini di SQL motore di dati internamente. Confronto binario fa quello che suggerisce, si fa un confronto binario. In generale la sua collazione più veloce se non ho mai quantificato, come controlla sequenze di bit, il che significa che è case insensitive e l'accento.
Altri suggerimenti
confronto binario confronta la stringa di byte per byte, come in una tabella unicode. Ad esempio: A, B, a, b. Un ordine sensibile caso sarebbe:. A, A, B, B
Il vantaggio di confronto binario è la sua velocità, il confronto stringa è molto semplice / veloce. Nel caso generale, gli indici con binario potrebbero non produrre risultati attesi per specie, tuttavia per corrispondenze esatte possono essere utili.
FASCICOL NOCASE colpisce anche le query maiuscole e minuscole.
Se si dispone di una colonna con questi valori: 'aa', 'AA'
select * from table where col = 'aa'
Se avete creato la colonna con COLLATE NOCASE tornerà sia 'AA' e 'AA'. In caso contrario, se non è stato specificato, esso restituisce solo 'AA'.
Si può anche specificare che in una query (questo è più lento quindi se si fosse creato il vostro colonna con COLLATE NOCASE)
select * from table where col = 'aa' COLLATE NOCASE