ORA-01481: Oracle 插入查询中的数字格式模型无效
ORA-01481: invalid number format model in oracle insert query
我在下面的查询中遇到错误
ORA-01481: invalid number format model
The user is attempting to either convert a number to a string via TO_CHAR or a string
to a number via TO_NUMBER and has supplied an invalid number format model parameter.
我在存储过程中使用这个查询。 day_id 列是数字数据类型,此列中存储的值是 YYYYMMDD
。 month_id 列也是数字数据类型,我想将此列中的值存储为 YYYYMM
INSERT INTO TEST_CHECK(MONTH_ID) VALUES
(to_char(REC.day_id, 'YYYYMM'));
您将转换应用于数字,就好像它是日期一样,试图将结果(字符串)用作数字。
SQL> create table TEST_CHECK(MONTH_ID number);
Table created.
SQL> INSERT INTO TEST_CHECK(MONTH_ID) VALUES(to_char(20180101, 'YYYYMM'));
INSERT INTO TEST_CHECK(MONTH_ID) VALUES(to_char(20180101, 'YYYYMM'))
*
ERROR at line 1:
ORA-01481: invalid number format model
您可能需要这样的东西:
SQL> INSERT INTO TEST_CHECK(MONTH_ID) VALUES(substr(to_char(20180101), 1, 6));
1 row created.
我记得以这种方式存储日期和月份不是一个好主意。
使用
INSERT INTO TEST_CHECK(MONTH_ID) VALUES
(substr(REC.day_id, 1, 6));
相反,因为 day_id
和 month_id
都是数字。
如果 day_id 是 date
格式,您可以将这种转换为 char,但事实并非如此。
您可以将 REC.day_id
的 to_char 转换应用为 to_char(REC.day_id)
,但如果有 no non-numeric character
,oracle 会隐式地将 number
视为 char
,而无需to_char,在字符串操作期间,例如 substr
。
我在下面的查询中遇到错误
ORA-01481: invalid number format model
The user is attempting to either convert a number to a string via TO_CHAR or a string
to a number via TO_NUMBER and has supplied an invalid number format model parameter.
我在存储过程中使用这个查询。 day_id 列是数字数据类型,此列中存储的值是 YYYYMMDD
。 month_id 列也是数字数据类型,我想将此列中的值存储为 YYYYMM
INSERT INTO TEST_CHECK(MONTH_ID) VALUES
(to_char(REC.day_id, 'YYYYMM'));
您将转换应用于数字,就好像它是日期一样,试图将结果(字符串)用作数字。
SQL> create table TEST_CHECK(MONTH_ID number);
Table created.
SQL> INSERT INTO TEST_CHECK(MONTH_ID) VALUES(to_char(20180101, 'YYYYMM'));
INSERT INTO TEST_CHECK(MONTH_ID) VALUES(to_char(20180101, 'YYYYMM'))
*
ERROR at line 1:
ORA-01481: invalid number format model
您可能需要这样的东西:
SQL> INSERT INTO TEST_CHECK(MONTH_ID) VALUES(substr(to_char(20180101), 1, 6));
1 row created.
我记得以这种方式存储日期和月份不是一个好主意。
使用
INSERT INTO TEST_CHECK(MONTH_ID) VALUES
(substr(REC.day_id, 1, 6));
相反,因为 day_id
和 month_id
都是数字。
如果 day_id 是 date
格式,您可以将这种转换为 char,但事实并非如此。
您可以将 REC.day_id
的 to_char 转换应用为 to_char(REC.day_id)
,但如果有 no non-numeric character
,oracle 会隐式地将 number
视为 char
,而无需to_char,在字符串操作期间,例如 substr
。