用于emoji/unicode的mysql regexp

anauzrmj  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(454)

我想在我的数据库中搜索任何包含蝴蝶表情符号的字符串- ? -使用 regexp .
例如

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

我在用 REGEXP 因为我可能想寻找 Hello[[:space:]]world 或者类似的。
我得到了错误
从regexp得到错误“在偏移量0处没有要重复的内容”
这样做有效:

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

但是我失去了寻找的能力, flying[[:space:]]? 我的分类是 utf8mb4_unicode_ci . 数据库是10.0.36-mariadb

qrjkbowd

qrjkbowd1#

SHOW VARIABLES LIKE 'char%';

听起来您好像没有告诉mysql客户端对字符使用什么编码。最好通过连接参数或 mysqli_charset (如果使用mysqli,而不是pdo)。
另外,在您的版本上运行以下命令:

SELECT 'ab' REGEXP '?';

我怀疑它会给你同样的错误信息。

crcmnpdw

crcmnpdw2#

老实说,我不知道为什么,但逃离你的蝴蝶会给你想要的输出(至少在我的版本mariadb 10.3.10中,它给出了相同的错误而没有转义)。

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

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

相关问题