致访客
感谢各位一年多的陪伴,因内容调整,本站将于近日迁移到新域名并不再更新主要内容。

MENU

MySQL中Base64编码、解码及乱码解决

• August 20, 2021 • 数据库

致访客
感谢各位一年多的陪伴,因内容调整,本站将于近日迁移到新域名并不再更新主要内容。
特此通知。

概述

由于业务需要,数据库中的某张表数据是使用Base64编码存储的,写入数据需要编码,取值时需要解码。
如果只为了存取数据,可以在业务层进行编码解码,但实际需求中是需要对数据进行条件查询的,所以这部分条件查询的解码就需要放到MySQL中进行。

基础操作

编码

MySQL为我们提供了TO_BASE64函数进行Base64编码

INSERT INTO tbl_order (id, content) VALUES(0, TO_BASE64 ('sometext'))

解码

解码也只需要调用FROM_BASE64函数

SELECT FROM_BASE64(content) FROM tbl_order

条件查询中也可以使用

SELECT id FROM tbl_order WHERE content = TO_BASE64("2021年8月20日")

乱码处理

如果在业务层进行BASE64编码并指定编码格式为UTF-8或其他格式,再进行查询就会出现乱码的问题
1.png

此时就需要使用CAST函数转换格式

SELECT CAST(FROM_BASE64(content) AS CHAR CHARACTER SET utf8 ) FROM tbl_order

问题即可解决
2.png