mysql - 字符类不适用于阿拉伯语文本列
问题描述
根据定义 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 有一个不错的正则表达式。例如,SELECT '٪' REGEXP '[تبل]';
返回 true。请注意,我正在测试阿拉伯百分号 - 十六进制D9AA
。请注意我是如何选择 D9 的,它存在于一些阿拉伯字符和 AA 中。
MySQL 8.0 手册暗示 REGEXP 可能适用于阿拉伯语。(但不适用于表情符号和一些汉字。) MariaDB 从 10.0.5 开始就内置了 PCRE。
推荐阅读
- java - 如何将本地坐标转换为 JavaFX 图表坐标
- java - 如何向该程序添加主方法?
- python - 如何在 Python3 中对复杂列表进行自然排序?
- java - 是否可以使用 IntStream 向数组添加元素?
- php - 如何在 CakePHP 中将 staff_name 列保存为其他列?
- c++ - 为什么不同的 cpu 对需要不同的时间来执行相同的代码
- java - 在jframe中设置按钮的位置不起作用
- sql - 在本地下载 PDF 并在单个按钮单击事件中将 PDF 上传到 sql db
- javascript - 在组件之间拆分显示道具数据
- javascript - 如何使用超链接打开特定的网络浏览器?