我有一个表格,我将我的固定文件数据插入到单个varchar2
列并调用此表tmp_table
CREATE TABLE "tmp_table"
( "COLUMN1" VARCHAR2(256 BYTE)
)
现在我正在尝试将此tmp_table
中的数据转换并插入最终table
,我使用SUBSTR
函数打破数据
现在我创建了下一个表格,我将插入这些列
CREATE TABLE "TABLE"
(
"COLUMN A" VARCHAR2(4),
"CODE" NUMBER(6,0),
"DATE_LOADED_TIMESTAMP" DATE
)
现在我运行一个选择查询来检查我是否可以从tmp_table
获取要插入到最终TABLE
的正确数据
所以我运行查询
SELECT Cast(SUBSTR(COLUMN1,8,6)as number(6)) as Code
from TMP_TABLE;
我看到的结果很好,我想要插入CODE
列。
现在我尝试运行最终查询:
insert into TABLE(CODE)
SELECT Cast(SUBSTR(COLUMN1,8,6)as number(6)) as Code
from TMP_TABLE;
现在它给了我错误
Error report -
ORA-01722: invalid number
为什么我无法将数字值插入6位数字列?
答案 0 :(得分:0)
好的,我发现发生了什么事我正在使用SQL Developer,我在下面运行的查询返回了我的工具中的一些结果,并且显示的结果很少显示这些字段中没有字符。
SELECT Cast(SUBSTR(COLUMN1,8,6)as number(6)) as Code
from TMP_TABLE;
我运行以下查询来搜索我正在查看的记录中是否有字符:
SELECT SUBSTR(COLUMN1,8,6)
from TMP_TABLE
where REGEXP_LIKE(SUBSTR(COLUMN1,8,6),'[A-Za-z]');
在这里我看到了角色,现在我知道不要盲目地信任SQL开发人员:)