我正在尝试创建一个存储多个值的表,但发生错误 (显示将数据类型varchar转换为数字)。
CREATE TABLE Employees
(
Employee_iD TINYINT NOT NULL,
Frist_Name VARCHAR(20) NULL,
Last_Name VARCHAR(25) NOT NULL,
Email VARCHAR(25) NOT NULL,
Phone_number NUMERIC,
Hire_date DATE NOT NULL,
Job_ID VARCHAR(10) NOT NULL,
Salary DECIMAL(8, 2),
Commission_Pct DECIMAL(2, 2),
Manager_ID TINYINT,
Department_ID TINYINT
);
INSERT INTO Employees (Employee_iD, Frist_Name, Last_Name, Email, Phone_number, Hire_date, Job_ID, Salary, Commission_Pct, Manager_ID, Department_ID)
VALUES ('100', 'Steven', 'King', 'SKING', '5151234567', '1987-06-17', 'AD PRES', '24000.00', 'NULL', 'NULL', '90');
我希望我将数据加载到表中
答案 0 :(得分:2)
您正试图在定义为'NULL'
和varchar
的列Commission_Pct
和Manager_ID
中插入值为decimal(2,2)
的值numeric
。
您必须改用NULL
,且不要使用引号:
insert into Employees
(Employee_iD,Frist_Name,Last_Name,Email,Phone_number,Hire_date,Job_ID,Salary,Commission_Pct,Manager_ID,Department_ID)
values
('100','Steven','King','SKING','5151234567','1987-06-17','AD PRES',24000.00,NULL,NULL,'90');
还有其他一些定义为数字类型的列,您可以为其插入varchar
值,例如Salary
。区别在于,您为'24000.0'
插入的值Salary
可以隐式转换为DECIMAL(8, 2)
,因此不会出现错误。
但是字符串文字'NULL'
不能解释为NULL
。
答案 1 :(得分:0)
只需从非字符串值中删除撇号的“ xxx” ... tinyint,数字和十进制即可。