Определить класс символов mySQL [...] соответствует любому символу в скобках. Поэтому я использовал его для арабских персонажей. И это дает мне пустой набор каждый раз. Вот мой запрос:
select hadith_raw_ar from view_hadith_in_book where hadith_raw_ar like '%[بل]ت';
Я бы очень признателен за любую помощь, если когда-либо. Спасибо большое!
Определить класс символов mySQL [...] соответствует любому символу в скобках.
Умм, это неточно. Класс символов на самом деле является частью Regex, а не MySQL. Однако вы все равно можете использовать Regex с MySQL, но вам нужно использовать ключевое слово REGEXP
вместо LIKE
.
Теперь, если вы пытаетесь сопоставить все, что начинается с любого символа, представленного в вашем классе символов, вы должны использовать шаблон регулярного выражения, который выглядит примерно как ^[...]
где вы заменяете ...
символами, которые вы хотите,
Итак, в вашем случае вам нужно что-то вроде этого:
SELECT hadith_raw_ar FROM view_hadith_in_book WHERE hadith_raw_ar REGEXP '^[تبل]';
Это эквивалентно:
SELECT hadith_raw_ar
FROM view_hadith_in_book
WHERE hadith_raw_ar LIKE 'ت%' OR
hadith_raw_ar LIKE 'ب%' OR
hadith_raw_ar LIKE 'ل%';
..когда не используется Regex.
REGEXP
. (См. Мой ответ.) Эквивалент LIKE
& OR
должен работать. ( LIKE
был реализован не так, как REGEXP
.)
В более старых версиях нельзя использовать классы символов с наборами символов LIKE или RLIKE и не-latin1. (По крайней мере, не ожидайте и получите правильные результаты.)
REGEXP
хромает. Он выглядит только в байтах; 6 байтов в вашем классе символов, некоторые из которых дублируются. Здесь hex: D8 AA D8 A8 D9 84
.
Иногда вы получите правильный ответ от REGEXP
. У MariaDB есть достойный REGEXP. Например, SELECT '٪' REGEXP '[تبل]';
возвращает true. Обратите внимание, что я тестирую знак арабского процента - hex D9AA
. Обратите внимание, как я выбрал D9, который существует у некоторых арабских символов и AA.
В руководстве MySQL 8.0 подразумевается, что REGEXP может работать правильно на арабском языке. (Но не для Emoji и некоторых китайских иероглифов.) MariaDB имеет встроенный PCRE с 10.0.5.
SELECT @@version;
или mysqld --version
Используйте коллекцию utf8_general_ci для вставки любых символов языка