数据库特殊字符导出Excel报错,如何在现有查询中搜索十六进制值?
当然可以用十六进制值来搜索这个男性符号!这种情况大概率是符号被编码转换、隐藏,或者你的查询工具没有正确渲染Unicode字符导致你看不到它,但数据库里其实存着对应的十六进制值。下面给你分不同数据库类型整理了具体的查询方法:
核心背景说明
男性符号♂的Unicode编码是U+2642,对应的十六进制值为2642,我们可以基于这个值来构建查询语句。
各数据库查询示例
MySQL/MariaDB
用UNHEX()函数把十六进制值转成字符进行匹配,加上BINARY确保精确匹配二进制编码:SELECT * FROM your_table WHERE column_name LIKE BINARY '%' UNHEX('2642') '%';也可以用正则表达式更灵活地匹配:
SELECT * FROM your_table WHERE column_name REGEXP UNHEX('2642');PostgreSQL
支持直接使用Unicode转义序列,或者通过十六进制转字符来查询:-- 方法1:Unicode转义匹配 SELECT * FROM your_table WHERE column_name ~ E'\\u2642'; -- 方法2:十六进制转字符后匹配 SELECT * FROM your_table WHERE column_name LIKE '%' || chr(0x2642) || '%';SQL Server
注意要加N前缀确保Unicode字符的正确处理:SELECT * FROM your_table WHERE column_name LIKE N'%' + NCHAR(0x2642) + N'%'; -- 或者直接转换十六进制值 SELECT * FROM your_table WHERE column_name LIKE N'%' + CONVERT(nvarchar(10), 0x2642) + N'%';
额外排查建议
- 先检查表字段的字符编码(比如是否为UTF-8/utf8mb4),如果编码不支持Unicode,符号可能被存为乱码,但十六进制查询依然能定位到对应行。
- 找到匹配的行后,可以单独导出这些行测试,确认是不是隐藏的♂符号导致了Excel导出报错。
内容的提问来源于stack exchange,提问作者LOL. NO.
相关产品推荐
相关产品推荐

