插入值时出错

时间:2014-05-13 04:10:52

标签: sql-server

我正在编写一段代码来填充表格并且它无法正常工作,它会不断发送错误消息,例如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值导致错误。我该如何解决这个问题?

3 个答案:

答案 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);

Working Fiddle

更好的方法是指定列名,如

insert into tablename (col1,col2,col3 ) values (value1,value2.value3);