我正在尝试在“选择”查询中删除表情符号。我正在使用MariaDB 10.3.14
这是到目前为止我提出的内容,但是没有用。它回显所有字符串。
SELECT REGEXP_REPLACE("<çşığ_loremipsumdolor", '/([\x10000-\x10FFFF]+)/g', '')
实际的字符串中会包含一些非英语甚至HTML标记。
我要从此字符串中获得的是<çşığ_loremipsumdolor
。
如何使用MariaDB 10.3从字符串中删除表情符号?
预先感谢
答案 0 :(得分:0)
您的正则表达式看起来正确。我认为这里的问题是MariaDB本身。关于根本原因,存在一个已确认的问题:MDEV-11777
作为一个丑陋的解决方法,您可以将文本转换为utf8(有关如何工作的详细信息,请参见this discussion)。这会将表情符号和其他字符显示为?
。
然后,您只需删除?
。
作为一个完整的例子:
SELECT REGEXP_REPLACE(convert('<çşığ_loremipsumdolor' USING utf8),'\\?','');
这将给您<çşığ_loremipsumdolor
。
它当然也将替换字符串中的任何实际问号。但是我确信这也可以解决(例如,用占位符替换想要的问号,然后删除不需要的问号,然后再次用问号替换占位符)。
不幸的是,这听起来像是我在SQL中不会做的事情。