原文链接:https://blog.wanvale.com/archives/427/
概述
由于业务需要,数据库中的某张表数据是使用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
或其他格式,再进行查询就会出现乱码的问题
此时就需要使用CAST函数转换格式
SELECT CAST(FROM_BASE64(content) AS CHAR CHARACTER SET utf8 ) FROM tbl_order
问题即可解决