将数据类型varchar转换为数字时出错。 SQL Server INSERT语句

时间:2017-10-18 21:16:00

标签: sql sql-server sql-server-2016

我正在尝试将一些数据插入此表中,但我收到此错误:

  

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

SQL INSERT STATEMENT

我试图删除引号,但它仍然向我显示相同的错误:

USE CobornSalesDB; 
GO 

INSERT INTO SalesActivity 
VALUES ('AC00001', '05-12-2016', 'AG16170', 'C000001', 'P0001', 'S00002'‌​, '1', '200000.00', '',‌ ​'1.2220', '20', '100000.00', '25-12-2016', '30-12-2016', '31-12-2016', 'A00‌​0001', 'PR00001'); 
GO

3 个答案:

答案 0 :(得分:3)

在所有数字列中,从您要插入的值中删除逗号。

答案 1 :(得分:2)

这是您从评论中获取的查询。 你真的应该把它作为文本包含在内,而不是图像。

INSERT INTO SalesActivity VALUES 
('AC00001',
'05-12-2016',
'AG16170',
'C000001',
'P0001',
'S00002'‌​,
'1',
'200000.00',
'',‌              -- valueEUR
​'1.2220', 
'20',
'100000.00',
'25-12-2016',
'30-12-2016',
'31-12-2016',
'A00‌​0001',
'PR00001'); 

在表的定义中,我们可以看到valueEUR列是数字。你在那里传递一个字符串。不仅仅是一个字符串,而是一个无法转换为数字的字符串。空字符串''无法转换为数字。

我猜,您想在该字段中插入NULL。所以,你应该

  • NULL语句中写INSERT
  • 此外,您应该删除数字周围的所有引号,以便服务器不必将字符串转换为数字。
  • 另外,您应该以{{1​​}}格式写下日期。否则,有一天你可能会惊讶地发现服务器错误地猜到它并且每天都交换。
  • 此外,您应列出YYYY-MM-DD语句中的所有列名称。否则,当您向表中添加新列时,代码将会中断。

查询应该类似于:

INSERT

答案 2 :(得分:0)

尝试以mm / dd / yyyy格式输入日期

INSERT INTO SalesActivity VALUES ('AC00001','12-05-2016','AG16170','C000001',
'P0001','S00002'‌​,1,200000.00,'',‌ ​1.2220, 20,100000.00,
'12-25-2016','12-30-2016','12-31-2016','A00‌​0001','PR00001');