HEX() 将字符串按字节编码如utf8mb4转为大写十六进制字符串非按字符数字转十六进制不补零NULL返回NULL还原须用严格校验的UNHEX()。HEX() 函数怎么把字符串转成十六进制直接用 HEX() 就行它默认把输入的字符串按字节逐个转成两位十六进制大写表示。比如中文、emoji、二进制 blob 都能转但要注意底层是按字节编码处理的不是按字符。常见错误现象HEX(你好) 返回的是 UTF-8 编码字节序列如 E4BDA0E5A5BD不是 GBK 或 Unicode 码点有人误以为是“字符的十六进制值”结果比对失败。输入是字符串按当前连接字符集通常是 utf8mb4编码后转字节输入是数字HEX(255) → FF等价于整数转十六进制字符串不补零输入是 NULL返回 NULL不是空字符串想转回原内容得用 UNHEX()且必须保证原始字节完整不能被截断或中间加空格UNHEX() 还原时为什么总得到 NULL 或乱码UNHEX() 对输入极其严格只接受长度为偶数的纯十六进制字符串0-9、A-F、a-f任何非法字符、奇数长度、空格都会让整个函数返回 NULL —— 不报错也不警告容易误判为“数据丢了”。使用场景常用于还原从日志、API 或前端传来的 hex 字符串比如加密后的 token、图片 blob 的 hex 表示。检查长度LENGTH(col_hex) % 2 ! 0 → 必然失败过滤干扰字符前端传来的 0xABC 或 ab cd ef 都要先用 REPLACE() 和正则MySQL 8.0清洗兼容性注意MySQL 5.7 不支持正则替换得靠嵌套 REPLACE(REPLACE(...)) 去空格和前缀性能影响UNHEX() 是逐字节解析大数据量时别在 WHERE 条件里对字段反复调用尽量提前解码存到新列HEX() 和 CONV() 在进制转换上的根本区别HEX() 是编码/序列化函数CONV() 是纯数学进制转换函数二者目的不同不能混用。 文心快码 文心快码Comate是百度推出的一款AI辅助编程工具