MySQL Like поиск любого японского символа в строке

Я работаю над разработкой японского веб-сайта. У меня есть что-то вроде следующей базы данных в MySQL:

+--------+-------+
| id     | kanji |
+--------+-------+
| 1      |    明 |
| 2      |    令 |
| 3      |    暗 |
| 4      |    週 |
+--------+-------+

Мне нужно сделать SELECT, чтобы при поиске значения «明暗» выбирались строки 1 и 3. Я знаю, что REGEXP может сделать что-то подобное с шаблоном [...], но, похоже, он плохо работает с китайскими (или в данном случае японскими) символами. Он показывает более широкий диапазон результатов. Кажется, что LIKE лучше работает с этой кодировкой, но я не знаю, как это сделать. Кто-нибудь знает, как сделать этот запрос?

Спасибо!

----- РЕДАКТИРОВАТЬ -----

Для REGEXP я пробую следующий запрос:

SELECT id, kanji
FROM kanjidic2 
WHERE kanji REGEXP '[明暗]';

Однако это лишь некоторые из результатов (запрос обнаружил 3842 совпадения, из которых могло быть только 2).

результаты по запросу

Вы имеете в виду это? SELECT * FROM TABLE WHERE KANJI IN (N'明','暗');

dwir182 14.11.2018 03:09

Я знаю, что поиск с разделением будет работать (даже ИЛИ выполнит эту работу), но я не могу проскользнуть в строку, так как она задается переменной в php из панели поиска.

Juan Camilo Orjuela 14.11.2018 03:23

Какую версию MySQL вы используете? Многобайтовые символы в REGEXP были введены в версии 8.0, поэтому он не будет работать должным образом со старыми версиями. dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html (поддержка регулярных выражений)

akky 14.11.2018 04:25

@akky Я расшифровываю информацию, поскольку я новичок в mySQL: innodb_version: 5.6.39 protocol_version: 10 Я предполагаю, что это версия 10, но когда я запускаю REGEXP, результат запроса - намного больше строк, чем два с два символа в запросе: /

Juan Camilo Orjuela 14.11.2018 14:33

В предыдущем комментарии вы сказали, что не можете разбить строку поиска. Это почему? Не имеет значения, анализируется ли он как переменная PHP.

Martin 14.11.2018 14:58

@Martin Основная причина в том, что я не знаю, как это сделать. Я думаю, что это могло бы превратиться в вопрос php, но мне было интересно, есть ли способ сделать это только с помощью SQL.

Juan Camilo Orjuela 14.11.2018 16:31

@ juan-camilo-orjuela не InnoDB или версия протокола. Версия MySQL не должна быть 5.x, если вы хотите использовать Unicode в REGEXP. Что означает «выбрать ВЕРСИЮ ();» возвращение? Я подозреваю, что у вас версия сервера MySQL 5.6 или что-то в этом роде.

akky 15.11.2018 01:15

@JuanCamiloOrjuela, лучший способ - обработать это в вашем PHP-скрипте, прежде чем отправлять его в MySQL. Однако в MySQL есть различные методы для разделения строк и получения желаемого результата.

Martin 15.11.2018 08:45
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
8
1 025
0

Другие вопросы по теме