Question

Selon la documentation sqlite3 ,

  

La clause COLLATE après chaque   nom de colonne définit un assemblage   séquence utilisée pour les entrées de texte dans ce   colonne. La séquence de classement par défaut   est la séquence de classement défini pour   cette colonne dans le CREATE TABLE   déclaration. Ou si aucune séquence de classement   est par ailleurs définie, le haut-   séquence de classement BINARY est utilisée.

Qu'est-ce que une séquence de collationnement faire, et ce qui est une séquence de classement BINARY?

Était-ce utile?

La solution

Il est ainsi que les commandes de moteur sql données en interne. Collation binaire fait ce qu'il suggère, il fait une comparaison binaire. En général, le classement de son plus rapide que je ne l'ai jamais quantifié, car il vérifie les modèles de bits, ce qui signifie qu'il est sans accent.

Autres conseils

classement binaire compare votre chaîne octet par octet, comme dans une table unicode. Par exemple: A, B, a, b. Un cas afin sensible serait:. A, A, b, B

L'avantage de classement binaire est sa vitesse, comme comparaison de chaînes est très simple / rapide. Dans le cas général, les index avec binaires pourraient ne pas produire les résultats attendus pour trier mais pour les correspondances exactes ils peuvent être utiles.

COLLATE NOCASE affecte également les requêtes sensibles à la casse.

Si vous avez une colonne avec ces valeurs: 'aa', 'aA'

select * from table where col = 'aa'

si vous avez créé votre colonne avec COLLATE NOCASE il retournera à la fois « aa » et « aA ». Dans le cas contraire, si vous ne l'avez pas spécifié, il retournera seulement « aa ».

Vous pouvez également spécifier dans une requête (ce qui est plus lent que si vous aviez créé votre colonne avec COLLATE NOCASE)

select * from table where col = 'aa' COLLATE NOCASE
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top