在 MariaDB Select 查询中删除表情符号

Remove Emoji on MariaDB Select Query

我正在尝试删除 Select 查询中的表情符号。我正在使用 MariaDB 10.3.14

这是我到目前为止的想法,但没有用。它回显所有字符串。

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

实际字符串中会有一些非英文的,甚至是一些 HTML 标签。

我想从这个字符串中实现的是<çşığ_loremipsumdolor

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

提前致谢,

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

作为一种丑陋的解决方法,您可以将文本转换为 utf8(请参阅 以了解其工作原理的一些详细信息)。这会将表情符号和其他字符显示为 ?.

之后您只需删除 ?

作为一个完整的例子:

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

这会给你 <çşığ_loremipsumdolor

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

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