у меня возникла проблема с немецким umlaute ä ö ü … при использовании сопоставления в моем запросе sql
когда я ищу «Apfel«Я тоже получаю»Apfel» когда используешь utf8_general_ci но я хочу просто получить «Apfel«Теперь, когда я перехожу на utf8_bin я получаю именно это НО его чувствительный к регистру. так Apfel или же Apfel не найдете äpfel или же Apfel
мне понадобится utf8_bin_ci что на самом деле не существует, я предполагаю?
использование utf8_bin с соответствием и нижним значением (поле) или lcase (поле) оказывается с ошибкой, так что …. что я могу сделать, чтобы решить эту проблему?
запрос похож;
select * FROM table where MATCH(field) AGAINST ('äpfel')
и что мне нужно, но не работает
select * FROM table where MATCH(lcase(field)) AGAINST ('äpfel')
в utf8_bin
Звучит так, как вам нужно utf8_bin_ci
но не существует, только utf8_bin
делает.
Если вы хотите добавить нечувствительность к регистру, вам нужно добавить LOWER()
для обоих элементов, таких как:
mysql> SELECT LOWER('Äpfel') = LOWER('äpfel') COLLATE utf8_bin;
+----------------------------------------------------+
| LOWER('Äpfel') = LOWER('äpfel') COLLATE utf8_bin |
+----------------------------------------------------+
| 1 |
+----------------------------------------------------+
1 row in set (0.00 sec)
-> expected resultmysql> SELECT LOWER('Äpfel') = LOWER('apfel') COLLATE utf8_bin;
+---------------------------------------------------+
| LOWER('Äpfel') = LOWER('apfel') COLLATE utf8_bin |
+---------------------------------------------------+
| 0 |
+---------------------------------------------------+
1 row in set (0.00 sec)
-> expected result as well
Обновление: Также, пожалуйста, посмотрите на этот интересный аналогичный ответ: utf8_bin против utf_unicode_ci
Увы, вы получаете выбор между сравнением битов (без складывания или без акцента) с ..._bin
или как складной, так и с акцентом ..._ci
Параметры сортировки.
это предоставляет информацию о том, какие символы эквивалентны или нет. Например, в utf8_german2_ci
они рассматриваются как равные:
A=a=ª=À=Á=Â=Ã=Å=à=á=â=ã=å=Ā=ā=Ą=ą
Но они приходят позже при сортировке:
ae=Ä=Æ=ä=æ
Отметить: _general_ci
никогда не рассматривает двухбуквенную пару как равную одному символу, следовательно ae
а также æ
обязательно неравны в utf8_general_ci
,