Che cosa significa COLLATE LOCALIZZATA ASC stand for?
-
24-09-2019 - |
Domanda
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);
}
Che cosa fa il basamento COLLATE LOCALIZED ASC
per?
Soluzione
Fascicola è solo parlare di fantasia per sort (ben sorta di). Quindi questa è una sorta di ordini basato sulle preferenze localizzate (alfabeto e le convenzioni di vale a dire la lingua corrente) in asc ordine finale.
Altri suggerimenti
Si istruisce SQLite per ordinare i caratteri non ASCII in modo appropriato. Caratteri con segni diacritici (alcuni chiamano loro accenti) hanno codici di byte più elevati rispetto al carattere Z, quindi una sorta ASCII non sarebbe adatta a molte lingue straniere.
Per esempio, il codice di byte la A maiuscola del char è 0x41
e del salmerino Z capitale è 0x5A
. Poi abbiamo la A (maiuscola accute), che il codice in Unicode è 0x00C1
. Quindi un bytecode pianura specie comporterebbe l'A da dopo la Z.
Ma in lingue che hanno questo tipo di personaggi della Convenzione è quello di mettere le persone con segni diacritici, come se non avessero il diacritico. Così la A dovrebbe essere insieme con la pianura A, almeno prima B.
E per illustrare, abbiamo seguito un elenco di nomi ordinati utilizzando la loro bytecode:
- Brenda
- Debby
- George
- Álvaro
- Érico
Ora con il COLLATE LOCALIZED
sarebbe ordinare dalla "base" del personaggio:
- Álvaro
- Brenda
- Debby
- Érico
- George
COLLATE è un operatore SQL che consente di sostituire l'ordinamento predefinito per le stringhe. Ad esempio, "COLLATE NOCASE" fa il confronto maiuscole e minuscole, e "COLLATE binario" fa un confronto tra maiuscole e minuscole.
L'interfaccia SQLite C consente di definire regole di confronto di personalizzati ( http://www.sqlite.org /c3ref/create_collation.html ).