oracle blob转字符串 中文乱码
最近有个数据分析的任务,需要在oracle下查看的数据。心想这还不是小意思。首先确定字段来源于哪个数据库,然后确定哪张表,再次确定表中哪个字段:select * from 表名,完事,大功告成。
但看过表数据时,完全傻眼了,数据类型是BLOB类型,用简单的select完全不行,根本得不到想要的数据,急得满头大汗。
表中数据最后根据领导的建议,先把blob转成字符串,以为大功告成,屋漏偏逢连夜雨啊,执行sql语句,竟然发现中文乱码,还让不让人活,各种坑啊。
上网各种查找资料,有好多大神在讨论此种问题,并详细给出了解决方案,如下:
select convert(UTL_RAW.CAST_TO_VARCHAR2(blob_field), 'zhs16gbk', 'AL32UTF8') from test_blob;
select UTL_RAW.CAST_TO_VARCHAR2(UTL_RAW.CONVERT(blob_field, 'AMERICAN_AMERICA.zhs16gbk', 'AMERICAN_AMERICA.AL32UTF8')) from test_blob;
问题解决,开心。
(完)
网友评论