2016-12-28 2 views
0

делает кто-то имеет объяснений, почему:MySQL сверка запрос

SELECT * FROM MY_TABLE WHERE 1 = 1 AND libelle COLLATE latin1_general_ci LIKE '%dég%' 

возвращает 1 запись (только запись с е) хотя

SELECT * FROM MY_TABLE WHERE 1 = 1 AND libelle COLLATE latin1_swedish_ci LIKE '%dég%' 

возвращает 4 записи (конечно, включая один из приведенных выше)?

Согласно MySQL doc latin1_general_ci является «многоязычным (западноевропейским) регистро-независимым», так что не следует ли ему управлять акцентами, такими как latin1_swedish_ci?

Благодаря Nicolas

+1

В Западной Европе существует много языков. Я сомневаюсь, что все они имеют те же правила, что и шведский. –

+1

показать результаты для обоих запросов, пожалуйста, –

+0

Пожалуйста, покажите другие значения, которые по-разному соответствуют различным запросам. –

ответ

0

Я подозреваю, что вы недоразумение, что параметры сортировки.

Сортировка - это набор правил, используемых на естественном языке (шведский, английский, русский, японский ...) для определения словарного порядка слов. В реляционных базах данных это используется для сортировки данных (например, ORDER BY) и для сравнения данных (например, WHERE статей или уникальных индексов). Несколько примеров:

  • Если вам необходимо заказать по названию страны на английском языке вы получите это:

    1. Канаду
    2. китайско
    3. Колумбия


    Однако, в традиционном испанском языке ch было независимым письмом, поэтому правильный порядок был следующим:

    1. Канада
    2. Колумбия
    3. Китай
  • В шведском å отдельное письмо, так что вы можете иметь регистрационное имя, как ångström, даже если у вас уже есть angström. На других языках они были бы дублирующими и не допускались.

Collation является не то, что вы используете для отображения смайликов и других символов Юникода. Это всего лишь кодировка (ISO-8859-1, UTF-8, UTF-16 ... независимо).

Смежные вопросы