我正在编写一段代码来填充表格并且它无法正常工作,它会不断发送错误消息,例如Error converting data type varchar to numeric.
这是MSSQL上的表创建,这里是插入语句
create table employee_pay_tbl
(
EMP_ID varchar(9) NOT NULL primary key,
position VARCHAR(15) not null ,
date_hire date,
pay_rate decimal (4,2),
date_last_raise date,
salary decimal (8,2),
bonus decimal (6,2),
constraint EMP_FK FOREIGN KEY (EMP_ID) REFERENCES EMPLOYEE_TBL(EMP_ID)
);
这是插件声明无效
INSERT INTO employee_pay_tbl
VALUES ('442346889','TEAM LEADER','2000-06-17','14.75','2009-06-01','NULL','NULL');
我尝试使用这段代码识别违规值
SELECT * FROM employee_pay_tbl WHERE isnumeric(bonus) = 0 AND bonus IS NOT null;
我认为Date值导致错误。我该如何解决这个问题?
答案 0 :(得分:1)
更改插入内容以使用NULL
代替'NULL'
INSERT INTO employee_pay_tbl
VALUES ('442346889','TEAM LEADER','2000-06-17','14.75','2009-06-01',NULL,NULL);
另外,请指定列名称,以便在表格结构发生变化时,不会破坏您的查询。
像
这样的东西INSERT INTO employee_pay_tbl (EMP_ID, position, date_hire, pay_rate, date_last_raise, salary, bonus)
VALUES ('442346889','TEAM LEADER','2000-06-17','14.75','2009-06-01',NULL,NULL);
答案 1 :(得分:0)
您在所需的十进制位置插入varchar,删除十进制列值周围的引号,尝试:
INSERT INTO employee_pay_tbl VALUES ('442346889', 'TEAM LEADER', '2000-06-17', 14.75, '2009-06-01', NULL, NULL);
答案 2 :(得分:0)
如果您要插入NULL
,请尝试使用
对于decimal
值,您可以在没有单引号的情况下尝试
INSERT INTO employee_pay_tbl
VALUES ('442346889',
'TEAM LEADER',
'2000-06-17',
14.75,
'2009-06-01',
NULL,
NULL);
更好的方法是指定列名,如
insert into tablename (col1,col2,col3 ) values (value1,value2.value3);