新手试图学习SQL ....消息8114,级别16,状态5,行1错误将数据类型varchar转换为数字

时间:2015-03-02 00:43:52

标签: sql sql-server

我刚开始学习数据库。我正在处理一个表,我收到如下错误消息:

  

Msg 8114,Level 16,State 5,Line 1
  将数据类型varchar转换为数字时出错。

我正在插入下表中的数据:

EMPLOYEE_PAY_TBL

EMP_ID       POSITION        DATE_HIRE   PAY_RATE   DATE_LAST   SALARY  BONUS
311549902    MARKETING       23-MAY-89              01-MAY-99   4000
442346889    TEAM LEADER     17-JUN-90      14.75   01-JUN-99

我创建的表格如下:

Emp_id  varchar (20)    not null
position    varchar (25)    not null
date_hire   date        not null
pay_rate    decimal  (4,2)  null
date_last raise date        null
Salary      int     null
Bonus       int     null

我无法弄清楚为什么我收到错误消息或如何更正。

请帮忙。

1 个答案:

答案 0 :(得分:1)

您正在尝试将数字列作为字符串插入。特别是你的列将采用空值。

在插入语句中,执行以下操作:

INSERT INTO EMPLOYEE_PAY_TBL VALUES ('311549902', 'MARKETING', '19890523', '', '19990501', '4000', '')

您正在尝试将列支付率和奖励设置为等于您在语句中的空字符串''。空字符串不是NULL值。它只是一串零元素。

所以试试:

INSERT INTO EMPLOYEE_PAY_TBL VALUES (311549902, 'MARKETING', '19890523', NULL, '19990501', 4000, NULL)

请注意,您也将日期视为字符串,最终会让您感到头痛。因为你是SQL的新手,所以当你到达那里时,我会让你穿过那座桥。