Che cosa significa la parola chiave COLLATE fare durante la creazione di un indice di SQLite?

StackOverflow https://stackoverflow.com/questions/799840

  •  18-09-2019
  •  | 
  •  

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?

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top