MySQL正则表达式用于表情符号/ Unicode

时间:2018-12-08 13:51:07

标签: mysql regex unicode mariadb emoji

我想使用在数据库中搜索包含蝴蝶表情符号-regexp-的所有字符串。

例如

SELECT *
     FROM   `table`
     WHERE  `text`
     REGEXP ''

我使用REGEXP是因为我可能想搜索Hello[[:space:]]world或类似的内容。

我得到了错误

  

正则表达式中出现错误“偏移量为0时不再重复”

这有效:

SELECT *
     FROM   `table`
     WHERE  `text`
     LIKE   '%%'

但是后来我失去了搜索flying[[:space:]]

的能力

我的归类为utf8mb4_unicode_ci。数据库是10.0.36-MariaDB

2 个答案:

答案 0 :(得分:0)

老实说,我不知道为什么,但是逃离蝴蝶会得到期望的输出。 (至少在我的版本中,MariaDB 10.3.10给出了相同的错误而没有转义)。

SELECT * FROM `table` WHERE `text` REGEXP '\\'

(请注意双反斜杠,第一个是在字符串中转义反斜杠,产生正则表达式\

答案 1 :(得分:0)

SHOW VARIABLES LIKE 'char%';

听起来好像您没有告诉MySQL client 用于字符的编码。最好通过连接参数或mysqli_charset(如果使用mysqli而不是PDO)完成此操作。

另外,在您的版本上运行此

SELECT 'ab' REGEXP '?';

我怀疑它会给您同样的错误消息。