gpt4 book ai didi

mysql 正则表达式 utf-8 字符

转载 作者:行者123 更新时间:2023-11-29 15:32:39 25 4
gpt4 key购买 nike

我正在尝试通过 REGEXMySQL 数据库获取数据,无论是否有特殊的 utf-8 字符。

让我用例子来解释一下:

如果用户输入诸如 sirena 这样的单词,它应该返回包含诸如 sirenasirénašíreňá 等单词的行.. 等等..当他输入 siréná 时,它也应该向后工作,它应该返回相同的结果..

我尝试通过 REGEX 搜索它,我的查询如下所示:

SELECT * FROM `content` WHERE `text` REGEXP '[sšŠ][iíÍ][rŕŔřŘ][eéÉěĚ][nňŇ][AaáÁäÄ0]'

仅当数据库中有单词 sirena 时才有效,但当数据库中有单词 siréňa 时则无效..

是因为 UTF-8 和 MySQL 的原因吗? (mysql列的排序规则是utf8_general_ci)

谢谢!

最佳答案

MySQL的正则表达式库不支持utf-8。

参见Bug #30241 Regular expression problems ,自 2007 年以来一直开放。他们必须更改他们使用的正则表达式库才能修复此问题,而且我还没有找到任何关于他们何时或是否会这样做的公告。

我见过的唯一解决方法是搜索特定的十六进制字符串:

mysql> SELECT * FROM `content` WHERE HEX(`text`) REGEXP 'C3A9C588';
+----------+
| text |
+----------+
| siréňa |
+----------+
<小时/>

回复您的评论:

不,我不知道 MySQL 有什么解决方案。

您可能必须切换到 PostgreSQL,因为 RDBMS 在其 regular expression syntax 中支持 UTF 字符的 \u 代码。 .

关于mysql 正则表达式 utf-8 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58569655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com