问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

使用mybatis将string转为blob存入数据库时出现ora-01465异常,无效的十六进制转换!求解,求解

发布网友 发布时间:2022-05-02 21:11

我来回答

1个回答

热心网友 时间:2023-10-09 13:14

oracle中用于保存位串的数据类型是RAW,LONG RAW(推荐使用BLOB)。
RAW,类似于CHAR,声明方式RAW(L),L为长度,以字节为单位,作为数据库列最大2000,作为变量最大32767字节。
LONG RAW,类似于LONG,作为数据库列最大存储2G字节的数据,作为变量最大32760字节
RAW类型的好处就是:在网络中的计算机之间传输 RAW 数据时,或者使用 Oracle 实用程序将 RAW 数据从一个数据库移到另一个数据库时,Oracle 服务器不执行字符集转换。存储实际列值所需要的字节数大小随每行大小而异,最多为 2,000 字节。可能这样的数据类型在数据库效率上会提高,而且对数据由于字符集的不同而导致的不一致的可能性在这边也排除了。
下面是官方的定义:
Note:
The LONG RAW datatype is provided for backward compatibility with existing applications. For new applications, use the BLOB and BFILEdatatypes for large amounts of binary data.
The RAW and LONG RAW datatypes are used for data that is not to be interpreted (not converted when moving data between different systems) by Oracle. These datatypes are intended for binary data or byte strings. For example, LONG RAW can be used to store graphics, sound, documents, or arrays of binary data. The interpretation depends on the use.
RAW is a variable-length datatype like the VARCHAR2 character datatype, except Oracle Net Services (which connects user sessions to the instance) and the Import and Export utilities do not perform character conversion when transmitting RAW or LONG RAW data. In contrast, Oracle Net Services and Import/Export automatically convertCHAR, VARCHAR2, and LONG data between the database character set and the user session character set (set by the NLS_LANGUAGE parameter of the ALTER SESSION statement), if the two character sets are different.
When Oracle automatically converts RAW or LONG RAW data to and from CHAR data, the binary data is represented in hexadecimal form with one hexadecimal character representing every four bits of RAW data. For example, one byte of RAW data with bits 11001011 is displayed and entered as 'CB.'
LONG RAW data cannot be indexed, but RAW data can be indexed.

常用于操作raw类型的函数:UTL_RAW.CAST_TO_RAW,hextoraw.
RAW保存的为16进制数。当使用HEXTORAW时,会把字符串中数据当作16进制数。而使用UTL_RAW.CAST_TO_RAW时,直接把字符串中每个字符的ASCII码存放到RAW类型的字段中。
下面是常用到了两个函数:
utl_raw.cast_to_raw([varchar2]);--将varchar2转换为raw类型
utl_raw.cast_to_varchar2([raw]);--将raw转换为varchar2类型
这里varchar2的字符集一般是GB2312。
因为RAW保存的为16进制数。故下面的SQL会报错: insert into test_raw values (hextoraw('hh'))
insert into test_raw values (hextoraw('hh'))
*
ERROR 位于第 1 行:
ORA-01465: 无效的十六进制数字

raw类型数据列常用的位操作:
utl_raw.bit_or();
utl_raw.bit_and();
utl_raw.bit_xor();
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
有释放证明书可以开无犯罪证明吗 刑满释放人员入党需要公安机关出具怎样证明与无罪证明一样的作用 交通事故私了是要注意哪些问题 【私了注意事项】车祸哪些情况不能私了 交通事故私了要注意什么 私了交通事故要注意的问题 wifi6跟wifi5的区别有什么? 只有吉祥寺是想住的街道吗 演员表 《吉祥寺真的是你想住的街道吗》:每个人都会找到适合自己的街道 日剧《只有吉祥寺是想住的街道吗》为何选择“生きていたん 如何评价日剧《只有吉祥寺是想住的街道吗?》? 求正宗车轮饼配方,私聊给我 不合法的十六进制数 上海七宝老街好玩吗?有什么可以玩的? 车轮饼的面糊配方窍门? 小猫拉肚子,该吃什么药 美国短毛猫拉稀怎么办,美短猫拉肚子怎么办 美短银虎斑拉肚子吃什么药,美短银虎斑猫拉稀 小猫拉肚子吃什么药管用 到家的美短猫拉稀怎么办,刚买回来的美短猫咪拉肚子 两个月的美短在拉稀怎么办,美短突然拉稀怎么办 元阳梯田各景点的门票可以分开买吗? 元阳梯田旅游 云南元阳梯田滑坡对老虎嘴景点有影响吗? 请问元阳梯田门票刘五岁老人免票吗 元阳梯田要门票吗 元阳哈尼梯田景区60岁要门票吗 云南元阳梯田门票有什么优惠政策 昆明元阳梯田要门票不? 元阳梯田门票多少? 元阳梯田门票多少钱,元阳梯田门票 做车轮饼的面糊怎么调? 急....上传文件出错:blob字段,ORA-01465: 无效的十六进制数字 台湾车轮饼配方 上海有哪些值得一去的旅行地?可以帮推荐下么? 台湾车轮饼怎么做才能酥而不软 红豆馅车轮饼怎么做 咸味车轮饼的做法 错误:缺少十六位进制数字 数字2018未标明后缀,但是可以判定它不是十六进制的数? 谁知道日式车轮饼皮面煳怎样做好吃? 怎么用一条sql语句在数据库中插入一个流 洋河车轮饼做法100字 做车轮饼为什么一定要用泡打粉? 十六进制代表数字几 车轮饼 华夫饼 有什么区别?是同一种食物吗? 十六进制里面为什么有0x 我在农业信用卡有欠款,但是在农行有房贷,影响卖房子吗 工行附属分期信用卡逾期可以卖房子吗 卖房人信用卡套现逾期对买房人货款受影响吗? 笔记本电脑开机时会发出很大的尖叫声?请问这是怎么回事?