Подтвердить что ты не робот

Что означает 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?

4b9b3361

Ответ 1

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

Ответ 2

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

Например, байтовый код капитала char составляет 0x41, а капитал Z char равен 0x5A. Тогда мы имеем Á (капитал A accute), код которого в Unicode равен 0x00C1. Таким образом, простая сортировка байтового кода приведет к тому, что Á будет после Z.

Но на языках, у которых есть такие символы, конвенция состоит в том, чтобы поместить их с диакритикой, как если бы у них не было диакритики. Таким образом, Á должен быть вместе с равниной A, по крайней мере до B.

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

  • Бренда
  • Дебби
  • Джордж
  • Álvaro
  • Érico

Теперь, используя COLLATE LOCALIZED, он сортирует по "базе" символа:

  • Álvaro
  • Бренда
  • Дебби
  • Érico
  • Джордж

Ответ 3

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

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