Pergunta

De acordo com a sqlite3 documentação ,

A cláusula COLLATE após cada nome da coluna define uma intercalação sequência utilizada para entradas de texto em que coluna. A sequência de intercalação padrão é a sequência de conferência definido essa coluna no CREATE TABLE declaração. Ou na ausência de seqüência de agrupamento é definido de outra forma, o embutido sequência de agrupamento BINÁRIO é usado.

O que a seqüência de intercalação fazer, eo que é uma seqüência de intercalação BINARY?

Foi útil?

Solução

É a maneira que os dados SQL encomendas de motores internamente. Agrupamento binário faz o que sugere, ele faz uma comparação binária. Geralmente seu o agrupamento mais rápido apesar de eu nunca ter quantificado, como ele verifica mordeu padrões, o que significa que é caso e insensível sotaque.

Outras dicas

Agrupamento binário compara seu byte de cordas de byte, como em uma tabela unicode. Por exemplo: A, B, a, b. Uma ordem sensível caso seria:. A, a, b, B

A vantagem de intercalação binária é a sua velocidade, como comparação de string é muito simples / rápido. No caso geral, índices com força binário não produzir resultados para tipo esperado, no entanto, para correspondências exatas eles podem ser úteis.

COLLATE NOCASE também afeta consultas sensíveis caso.

Se você tem uma coluna com estes valores: 'aa', 'AA'

select * from table where col = 'aa'

Se você criou sua coluna com COLLATE NOCASE ele irá retornar tanto 'AA' e 'AA'. Caso contrário, se você não especificá-lo, ele irá retornar apenas 'AA'.

Você também pode especificá-lo em uma consulta (isto é mais lento, em seguida, se você tivesse criado a sua coluna com COLLATE NOCASE)

select * from table where col = 'aa' COLLATE NOCASE
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top