You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MariaDB 10.3的SELECT查询中移除表情符号?

解决MariaDB 10.3.14中用REGEXP_REPLACE移除表情符号的问题

你的问题出在三个关键细节上:MariaDB的正则语法和你习惯的JS风格不一样,表情符号的Unicode范围覆盖不全,还有码点的写法错误。我来一步步帮你修正:

问题分析

  • 正则语法错误:MariaDB的REGEXP_REPLACE不需要用/包裹正则表达式,也不需要g修饰符——它默认就是全局替换所有匹配项的,你加的这些符号反而会让正则无法正确匹配。
  • Unicode码点写法错误:在MariaDB中,匹配超出基本多语言平面(BMP)的字符(比如大部分表情符号),需要用\x{XXXXXX}的格式(注意大括号),而不是\x10000这种写法。
  • 表情范围不全:你只覆盖了辅助平面的一小部分表情,但很多常见表情其实在BMP范围内(比如你例子里的😒、😊属于U+1F600到U+1F64F的emoji表情组),所以原来的正则根本匹配不到这些目标字符。

正确的查询语句

下面这个语句可以精准移除常见表情符号,同时完整保留你的非英文字符(比如çşığ)和HTML实体:

SELECT REGEXP_REPLACE("<çşığ_lorem😒ipsum😊dolor", 
  '[\\x{1F600}-\\x{1F64F}\\x{1F300}-\\x{1F5FF}\\x{1F680}-\\x{1F6FF}\\x{1F1E0}-\\x{1F1FF}\\x{2600}-\\x{26FF}\\x{2700}-\\x{27BF}]', 
  '') AS cleaned_text;

正则范围说明

上面的正则包含了所有主流表情符号的Unicode范围:

  • \x{1F600}-\x{1F64F}:基础表情符号(Emoticons)
  • \x{1F300}-\x{1F5FF}:符号与象形文字(Symbols & Pictographs)
  • \x{1F680}-\x{1F6FF}:交通与地图符号(Transport & Map Symbols)
  • \x{1F1E0}-\x{1F1FF}:国旗表情(Flags)
  • \x{2600}-\x{26FF}:杂项符号(Miscellaneous Symbols)
  • \x{2700}-\x{27BF}:装饰符号(Dingbats)

测试结果

执行上面的语句后,你会得到完全符合预期的结果:

<çşığ_loremipsumdolor

这样就完美保留了你需要的内容,同时彻底移除了所有表情符号。

内容的提问来源于stack exchange,提问作者Arda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:10:47