当我尝试将内容插入下表时,我需要帮助修复我收到的错误消息。一个例子可以帮助我更好地理解它。
CREATE TABLE EMP (
EMP_ID INTEGER NOT NULL
, FNAME VARCHAR(30) NOT NULL
, LNAME VARCHAR(30) NOT NULL
, ADDRESS VARCHAR(50) NOT NULL
, SALARY VARCHAR(50) NOT NULL
, DOB DATE NOT NULL
, SHIFTS VARCHAR2(20) NOT NULL
, SSN CHAR(11) NOT NULL
, PHONE CHAR(12) NOT NULL
, HIRING_DATE CHAR(12) NOT NULL
, EMAIL VARCHAR2(50) NOT NULL
);
插入:
INSERT INTO EMP
VALUES(1,'Erica', 'Brandon', '425 Main Street', 'Credit Card',
'1965-06-30', 'Evening', '610-24-1111',
'603-547-8296', '2010-01-16', 'ejohnson@fakemail.com');
错误报告 - SQL错误:ORA-01722:无效的数字 01722. 00000 - "无效数字" *原因:指定的号码无效。 *操作:指定有效数字。
答案 0 :(得分:1)
使用TO_DATE
:
INSERT INTO EMP
VALUES(1,
'Erica',
'Brandon',
'425 Main Street',
'Credit Card',
TO_DATE('1965-06-30', 'yyyy-mm-dd'),
'Evening',
'610-24-1111',
'603-547-8296',
TO_DATE('2010-01-16', 'yyyy-mm-dd'),
'ejohnson@fakemail.com');
的 SqlFiddleDemo
强>
优良作法是登记列名,如:
INSERT INTO EMP(EMP_ID,FNAME,LNAME...)
VALUES (...);
您应将HIRING_DATE
存储为DATE
而不是字符串。
答案 1 :(得分:0)
Oracle中的日期格式取决于国际化设置(默认情况并不好)。您可以使用INSERT INTO EMP
VALUES(1, 'Erica', 'Brandon', '425 Main Street', 'Credit Card',
DATE '1965-06-30', 'Evening', '610-24-1111',
'603-547-8296', '2010-01-16', 'ejohnson@fakemail.com');
关键字指定使用ISO标准格式的日期:
HiringDate
注意:
EMP
应该是日期类型,而不是字符类型。insert
。{/ li>中set { price = value / 100; }
的列