MySQL中如何使用HEX函数转换十六进制_MySQL进制转换函数

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辅助编程工具

相关推荐
兵慌码乱9 小时前
基于Python+PyQt5+SQLite的药房管理系统实现:事务一致性与界面解耦全流程解析
python·sqlite·信号与槽·pyqt5·数据库设计·桌面应用开发·事务处理
金銀銅鐵10 小时前
[Python] 体验用欧几里得算法计算最大公约数的过程
python·数学
FreakStudio14 小时前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
用户03321266636715 小时前
使用 Python 从零创建 Word 文档
python
Csvn20 小时前
Python 两大经典坑点 —— 可变默认参数 & 闭包延迟绑定
后端·python
曲幽21 小时前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
用户556918817531 天前
#从脚本到独立程序:Python + Playwright 批量抓取的完整踩坑记录
python·自动化运维
倔强的石头_1 天前
KingbaseES 新版MySQL 兼容版体验:旧版迁移 + 功能实测
数据库
兵慌码乱2 天前
基于 MediaPipe 与 PySide2 的手势交互音乐控制系统实现:轻量化视觉交互全流程解析
python·opencv·计算机视觉·人机交互·手势识别·mediapipe·pyside2
luckdewei2 天前
FastAPI 资产管理系统实战:复杂 ORM 关联、Alembic 迁移与 N+1 查询优化
python