在mysql中遇到blob,我们又想展示这个字段,这个时候应该优先考虑在程序中转换,可以参考我的转换记录:
可能有一些特殊情况,我们不得不在SQL语句中完成转换,比如以byte[]做为匹配条件来查询。就像下面这样:
SELECT * FROM mysql.general_log WHERE CAST(argument AS CHAR(10) CHARACTER SET utf8) LIKE 'Insert%'
general_log表中的argument字段类型就是mediumblob的。
简单概括下就是像下面这样使用:
Select CAST(blobfield AS CHAR(100) CHARACTER SET utf8) From Mytable
lebang2020.cn出品
SQL 中的转换方式
- 用 CAST:SELECT CAST(argument AS CHAR(10) CHARACTER SET utf8) FROM ...
- 用 CONVERT:CONVERT(argument USING utf8)
- 必须关注字符集,否则中文会乱码。
提示:能拿到 BLOB 原始字节时,优先在程序里按明确编码转换,比在 SQL 中转换更可控;SQL 转换主要用于无法改动程序、或需要以内容为条件的模糊查询场景。
相关阅读
- 在MySQL 中使用NOLOCK有必要吗?|原理与替代方案
- MySql 中不存在就插入存在则更新语句
- MySQL 创建用户命令带密码和加密规则
- Not loading a JDBC driver as driverClassName property is null