在CAST之后无法插入表格(SUBSTR(列,8,6)作为数字(6))

时间:2017-07-31 13:26:51

标签: sql oracle oracle12c

我有一个表格,我将我的固定文件数据插入到单个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位数字列?

1 个答案:

答案 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开发人员:)