昨天同事突然问我,MySQL怎么查找Unicode字符
\u0
,在表里可能显示口
,也可能显示小红点
,还可能不显示。
对于后端同学是怎么把这种字符插入到数据库,暂时复现不了。但对于存在有这种小红点的值,查询返回到后端会出现问题,因此想把所有这种记录查询出来并删除。
问题来了,select * from tb where parent_say like '%小红点%'
,小红点
复制不出来呀...
换种思路,任何字符在电脑存储的都是二进制,那何不把这种特殊字符转成十六进制,再反转查询?
- 定位到该特殊字符位置,
substr
+hex
获取到对应的十六进制值
- 反转模糊查询
unhex
如果想替换掉,一样的操作,replace(parent_say,unhex('00'),'')
。
同理,如果想查找emoji表情呢?select * from t_utf8mb4 where binary val like '%☺%'
Comments