我有下表:
create table o_newstdata1 (
field1 raw(8)
);
以下输入数据文件:
0x12345678
0x1234
0x12
如何将这样的数据插入到我的 o_newstdata1 表中?
我尝试将其作为 varchar 数据加载:
load data
INFILE '/export/home/mine/input.data'
replace
into table o_newstdata1
trailing nullcols
(
field1 varchar (8)
)
并查询了这样的内容:
select field1 from o_newstdata1 where utl_raw.cast_to_raw(field1) like '0x1234';
但它不起作用,有什么建议吗?
最佳答案
可能有两个错误来源:
- 使用 SQL*Loader 加载原始数据
- 查询原始数据
要检查查询部分是否有效,请使用类似的东西:
CREATE TABLE o_newstdata1 (field1 RAW(8));
INSERT INTO o_newstdata1(field1) VALUES ('12AB');
INSERT INTO o_newstdata1(field1) VALUES ('34EF');
不需要转成raw,直接用Oracle的hex格式即可。版本 1 使用从 RAW
到 VARCHAR2
的隐式转换,版本 2 显式转换:
SELECT * FROM o_newstdata1 WHERE field1 = '12AB';
SELECT * FROM o_newstdata1 WHERE rawtohex(field1)='12AB';
关于sql - 如何将十六进制数据插入到oracle表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17080589/