Qu'est-ce que COLLATE ENDROITS ASC représente?
-
24-09-2019 - |
Question
private Cursor getContacts()
{
// Run query
Uri uri = ContactsContract.Contacts.CONTENT_URI;
String[] projection = new String[] {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME
};
String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '" +
(mShowInvisible ? "0" : "1") + "'";
String[] selectionArgs = null;
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
return managedQuery(uri, projection, selection, selectionArgs, sortOrder);
}
Qu'est-ce que COLLATE LOCALIZED ASC
représente?
La solution
est Collate figurez-vous parler pour le tri (bien en quelque sorte). Donc, ce genre est la commande en fonction des préférences localisées (à savoir l'alphabet de la langue actuelle et conventions) asc pour la fin.
Autres conseils
Il indique SQLite pour trier les caractères non-ASCII appropriée. Chars avec diacritiques (accents certains les appellent) ont des codes d'octets plus élevé que le caractère Z, donc une sorte ASCII ne serait pas s'adapter à de nombreuses langues étrangères.
Par exemple, la capitale du code d'octets char est 0x41
et 0x5A
de la capitale Z omble chevalier. Ensuite, nous avons le A (majuscule accute) qui code Unicode est 0x00C1
. Donc, une sorte de code d'octet clair entraînerait la Á être après la Z.
Mais dans les langues qui ont ce genre de personnages de la convention est de mettre ceux qui diacritiques comme s'ils ne pas le diacritique. Ainsi, le A doit être en même temps que la plaine A, au moins avant B.
Et pour illustrer, nous avons ci-dessous une liste de noms en utilisant leur bytecode triée:
- Brenda
- Debby
- George
- Álvaro
- Érico
Maintenant, en utilisant l'COLLATE LOCALIZED
il trierait par la « base » du caractère:
- Álvaro
- Brenda
- Debby
- Érico
- George
COLLATE est un opérateur SQL qui vous permet de modifier l'ordre de tri par défaut pour les chaînes. Par exemple, « COLLATE NOCASE » fait la comparaison insensible à la casse, et « COLLATE BINARY » fait une comparaison sensible à la casse.
L'interface SQLite C vous permet de définir un classement personnalisé ( http://www.sqlite.org /c3ref/create_collation.html ).