将blob转为字符串
-- 当前方式是按数据库默认编码将二进制转为的字符串(如果二进制存储时的编码和数据库默认编码不一致则可能会出现乱码)
select SYS.UTL_RAW."cast_to_varchar2"(dbms_lob.SUBSTR(A7)) from T_ZML_20240304__1_1;
blob 按指定编码转为 字符串
-- 将blob字段转为 16进制字符串值 并将其按指定编码(UTF8) 转为字符串
select UTL_I18N.raw_to_char(dbms_lob.SUBSTR(A7),'UTF8') from T_ZML_20240304__1_1;
-- 字符串按指定编码转为16进制字符串值
select UTL_I18N.string_to_raw('我是中文+123+hello world','GBK');
select UTL_I18N.string_to_raw('我是中文+123+hello world','UTF8');
详细参考 官方文档
其他示例
-- gbk 编码
SELECT UNHEX('D0C4CCF8CDF8C2E7B7BDC3E6A3BAA2D9BCAFC8BABCE4B5C4D0C4CCF8CDF8C2E7D2AAD7DFCAFDBEDDA3ACD7EEBAC3D7DFC1BDB8F6BDBBBBBBBBFAA3ACC0B4CAB5CFD6C8DFD3E0BACDB8BAD4D8BEF9BAE2A1A3A2DAD0E8D2AAB0D1B7FECEF1C6F7B6E0B8F6D0C4CCF8CDF8BFA8B0F3B6A8CEAAD2BBB8F6C2DFBCADCDF8BFA8C0B4CAB9D3C328B1C8C8E7626F6E64B7BDCABD29A1A3A2DBBDBBBBBBBBFACBD9B6C8BDA8D2E9D6C1C9D9CEAAC7A7D5D7A1A3');
SELECT UNHEX('B4EFC3CECAFDBEDDBFE2D3D0CFDEB9ABCBBE');
-- UTF8编码
SELECT UNHEX('E68891E698AFE4B8ADE696872B3132332B68656C6C6F20776F726C64');
mysql根据指定编码进行转换
SELECT CONVERT(UNHEX('E68891E698AFE4B8ADE696872B3132332B68656C6C6F20776F726C64') USING utf8) AS result;
SELECT CONVERT(UNHEX('B4EFC3CECAFDBEDDBFE2D3D0CFDEB9ABCBBE') USING GBK) as result;
Q.E.D.