Что означает COLLATE LOCALIZED ASC?

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);
    }

Что значит COLLATE LOCALIZED ASC стоять?

3 ответов


Collate просто фантазии говорят для сортировки (ну вроде). Таким образом, это порядок сортировки на основе локализованных предпочтений (т. е. алфавита и соглашений текущего языка) в ascконечные заказа.


он инструктирует SQLite сортировать символы, отличные от ASCII, соответствующим образом. Символы с диакритикой (некоторые называют их акцентами) имеют более высокие байтовые коды, чем символ Z, поэтому простая сортировка ASCII не подходит для многих иностранных языков.

например, заглавный байтовый код символа -0x41 и столица Z char'S является 0x5A. Тогда у нас есть Á (capital a accute), код которого в Unicode является 0x00C1. Так что простой байт-код приведет к Á после З.

но в языках, которые имеют такие символы, соглашение заключается в том, чтобы поставить те с диакритикой, как если бы у них не было диакритики. Так что а должно быть вместе с равниной а, по крайней мере, до В.--5-->

и для иллюстрации ниже приведен список имен, отсортированных с использованием их байт-кода:

  • бренда
  • Наталья
  • Джордж
  • Альваро
  • Érico

теперь с помощью COLLATE LOCALIZED он будет сортировать по "база" персонажа:

  • Альваро
  • бренда
  • Наталья
  • Érico
  • Джордж

COLLATE-это оператор SQL, который позволяет переопределить порядок сортировки строк по умолчанию. Например, " COLLATE NOCASE "выполняет сравнение без учета регистра, а" COLLATE BINARY " -сравнение с учетом регистра.

интерфейс SQLite C позволяет определять пользовательские параметры сортировки (http://www.sqlite.org/c3ref/create_collation.html).