我想使用在数据库中搜索包含蝴蝶表情符号-
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
答案 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 '?';
我怀疑它会给您同样的错误消息。