sql - 如何将十六进制数据插入到oracle表中?

标签 sql oracle sql-loader

我有下表:

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';

但它不起作用,有什么建议吗?

最佳答案

可能有两个错误来源:

  1. 使用 SQL*Loader 加载原始数据
  2. 查询原始数据

要检查查询部分是否有效,请使用类似的东西:

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 使用从 RAWVARCHAR2 的隐式转换,版本 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/

相关文章:

javascript - Oracle JET CLI "ojet"未定义

Oracle - 数字到 varchar

oracle - 用于创建 Oracle SQL Loader 控制文件的用户界面

Oracle:导入 CSV 文件

Android 和 SQLite : is there no good way to join queries with the ContactsContract API

php - 安全转义表名/列名

java - 无法将 Eclipse 与 SQL Server 连接

sql - 替换表列中的部分字符串

sql - 如何在oracle中打印游标值?