mysql - 字符类不适用于阿拉伯文本列

标签 mysql regex wildcard

根据定义,MySQL 字符类 [...] 匹配括号内的任何字符。所以我用它来表示阿拉伯字符。它每次都给我空集。 这是我的查询:

select hadith_raw_ar from view_hadith_in_book where hadith_raw_ar like '%[بل]ت';

最佳答案

对于旧版本,您无法使用带有 LIKE 或 RLIKE 的字符类以及非 latin1 字符集。 (至少不会,并期望得到正确的结果。)

REGEXP 很蹩脚。它只查看字节;字符类中有 6 个字节,其中一些是重复的。这是十六进制:D8 AA D8 A8 D9 84

有时您会碰巧REGEXP中得到“正确”的答案。 MariaDB 有一个不错的 REGEXP。例如,SELECT '٪' REGEXP '[Ña]'; 返回 true。请注意,我正在测试阿拉伯百分号 - 十六进制 D9AA。请注意我是如何选择 D9 的,它存在于一些阿拉伯字符和 AA 中。

MySQL 8.0 手册暗示 REGEXP 可能对阿拉伯语正确工作。 (但不适用于表情符号和一些汉字。)MariaDB 从 10.0.5 开始就内置了 PCRE。

关于mysql - 字符类不适用于阿拉伯文本列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50522181/

相关文章:

mysql - sql中如何设置group_concat分隔符为列字段

php - 如何在 PHP 中获取 MySQL 表的最后插入 ID?

mysql - 使用 MAMP 进行 Sequelize 和 MySQL,出现错误

c++ - 用于封装 v4 子网掩码和 v6 前缀长度的正则表达式

python - 使用正则表达式查找所有完全大写的短语

python - re.finditer 和 re.findall 之间的不同行为

php - 使用 5 个页面的 mod-Rewrite(通配符子域)

php - php 类中的 Medoo 对象

c# - 在列表中查找匹配了三个项目的元组

wildcard - 文件夹中带有扩展名的 .gitignore 文件