在MariaDB选择查询上删除表情符号

时间:2019-04-09 10:12:04

标签: mysql sql mariadb emoji

我正在尝试在“选择”查询中删除表情符号。我正在使用MariaDB 10.3.14

这是到目前为止我提出的内容,但是没有用。它回显所有字符串。

SELECT REGEXP_REPLACE("<çşığ_loremipsumdolor", '/([\x10000-\x10FFFF]+)/g', '')

实际的字符串中会包含一些非英语甚至HTML标记。

我要从此字符串中获得的是<çşığ_loremipsumdolor

如何使用MariaDB 10.3从字符串中删除表情符号?

预先感谢

1 个答案:

答案 0 :(得分:0)

您的正则表达式看起来正确。我认为这里的问题是MariaDB本身。关于根本原因,存在一个已确认的问题:MDEV-11777

作为一个丑陋的解决方法,您可以将文本转换为utf8(有关如何工作的详细信息,请参见this discussion)。这会将表情符号和其他字符显示为?

然后,您只需删除?

作为一个完整的例子:

SELECT REGEXP_REPLACE(convert('<çşığ_loremipsumdolor' USING utf8),'\\?','');

这将给您<çşığ_loremipsumdolor

它当然也将替换字符串中的任何实际问号。但是我确信这也可以解决(例如,用占位符替换想要的问号,然后删除不需要的问号,然后再次用问号替换占位符)。

不幸的是,这听起来像是我在SQL中不会做的事情。