be definition mysql character class[…]匹配方括号中的任何字符。所以我用它来表示阿拉伯字符。它每次都给我空套。我的问题是: select hadith_raw_ar from view_hadith_in_book where hadith_raw_ar like '%[بل]ت'; 如果有任何帮助,我都会非常感激。非常感谢!
be definition mysql character class[…]匹配方括号中的任何字符。 嗯,那不准确。character类实际上是regex的一部分,而不是mysql。当然,您仍然可以在mysql中使用regex,但是您需要使用关键字 REGEXP 而不是 LIKE . 现在,如果您试图匹配以character类中表示的任何字符开头的任何内容,那么应该使用类似 ^[...] 在那里你可以替换 ... 你想要的角色。 所以,在你的情况下,你需要这样的东西:
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 'ل%';
3条答案
按热度按时间suzh9iv81#
be definition mysql character class[…]匹配方括号中的任何字符。
嗯,那不准确。character类实际上是regex的一部分,而不是mysql。当然,您仍然可以在mysql中使用regex,但是您需要使用关键字
REGEXP
而不是LIKE
.现在,如果您试图匹配以character类中表示的任何字符开头的任何内容,那么应该使用类似
^[...]
在那里你可以替换...
你想要的角色。所以,在你的情况下,你需要这样的东西:
相当于:
..不使用正则表达式时。
参考文献:
正则表达式:字符类或字符集。
在mysql中使用正则表达式。
zsbz8rwp2#
对于旧版本,不能将字符类与like或rlike以及非拉丁字符集一起使用(至少不会,希望得到正确的结果。)
REGEXP
是瘸子。它只看字节;字符类中的6个字节,其中一些是重复的。这是魔咒:D8 AA D8 A8 D9 84
.有时你会碰巧从别人那里得到“正确”的答案
REGEXP
. mariadb有一个不错的regexp。例如,SELECT '٪' REGEXP '[تبل]';
返回true。注意,我正在测试一个阿拉伯语百分号-hexD9AA
. 注意我是如何选择d9的,它存在于一些阿拉伯语字符和aa中。mysql 8.0手册暗示regexp可以正确地用于阿拉伯语(mariadb从10.0.5开始就内置了pcre。
sycxhyv73#
使用utf8\u general\u ci集合插入任何语言字符