01月20, 2021
收藏本站

MySQL查找特殊字符(小红点)

昨天同事突然问我,MySQL怎么查找Unicode字符\u0,在表里可能显示,也可能显示小红点,还可能不显示。

image.png image.png

对于后端同学是怎么把这种字符插入到数据库,暂时复现不了。但对于存在有这种小红点的值,查询返回到后端会出现问题,因此想把所有这种记录查询出来并删除。
问题来了,select * from tb where parent_say like '%小红点%'小红点复制不出来呀... 换种思路,任何字符在电脑存储的都是二进制,那何不把这种特殊字符转成十六进制,再反转查询?

  1. 定位到该特殊字符位置,substr+hex获取到对应的十六进制值
    image.png
  2. 反转模糊查询unhex image.png

如果想替换掉,一样的操作,replace(parent_say,unhex('00'),'')

同理,如果想查找emoji表情呢?select * from t_utf8mb4 where binary val like '%☺%'


Comments