我试图MySQL通过REGEX有或没有特殊的utf-8字符从数据库获取数据.
让我解释一下例子:
如果用户输入的字像sirena它应该返回行,其中包括类的字眼sirena,siréna,šíre?á..等..也应该倒退,当他进入工作siréná应该返回相同的结果..
我试图通过搜索REGEX,我的查询看起来像这样:
SELECT * FROM `content` WHERE `text` REGEXP '[sšŠ][iíÍ][r????][eéÉ??][n??][AaáÁäÄ0]'
Run Code Online (Sandbox Code Playgroud)
它只适用于数据库中的单词sirena而不是单词时才有效siré?a.
是因为UTF-8和MySQL有关吗?(整理mysql列是utf8_general_ci)
谢谢!
MySQL的正则表达式库不支持utf-8.
请参阅Bug#30241正则表达式问题,该问题自2007年以来一直处于打开状态.在修复之前,他们必须更改他们使用的正则表达式库,并且我没有找到任何关于何时或是否会执行此操作的公告.
我见过的唯一解决方法是搜索特定的HEX字符串:
mysql> SELECT * FROM `content` WHERE HEX(`text`) REGEXP 'C3A9C588';
+----------+
| text |
+----------+
| siré?a |
+----------+
Run Code Online (Sandbox Code Playgroud)
你的评论:
不,我不知道MySQL的任何解决方案.
您可能必须切换到PostgreSQL,因为RDBMS \u在其正则表达式语法中支持UTF字符的代码.
| 归档时间: |
|
| 查看次数: |
3174 次 |
| 最近记录: |