ssms无法将varchar转换为数字

时间:2019-05-14 05:49:02

标签: sql-server

我正在尝试创建一个存储多个值的表,但发生错误 (显示将数据类型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');

我希望我将数据加载到表中

2 个答案:

答案 0 :(得分:2)

您正试图在定义为'NULL'varchar的列Commission_PctManager_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,数字和十进制即可。