将varchar值转换为int时转换失败

时间:2010-10-27 22:09:47

标签: tsql insert int varchar

我在插入数据的简单查询中遇到错误。我已经完成了搜索,但对于我的生活,我无法弄清楚发生了什么。这是我的SQL:

IF OBJECT_ID('settings') IS NOT NULL
DROP TABLE [settings]
CREATE TABLE [settings] (
    [id] [bigint] IDENTITY(1,1) NOT NULL PRIMARY KEY,   
    [tenant_id] [bigint] NOT NULL, 
    [name] [varchar](32) NOT NULL, 
    [value] [varchar](255) NOT NULL
)

INSERT INTO settings 
       (name, value, tenant_id)
       VALUES
       ('from_email' , '', 1),
       ('dash_rss', '', 1),
       ('theme', '', 1),
       ('version', '0.84', 1),
       ('iphone_theme', '', 1),
       ('enable_sandbox_number', 1, 1),
       ('twilio_endpoint', 'https://api.twilio.com/2008-08-01', 1);

我得到的错误是:将varchar值'0.84'转换为数据类型int时转换失败。

当列是varchar时,为什么要尝试将其转换为int?

2 个答案:

答案 0 :(得分:4)

我想知道SQL Server是否试图在这里超越你。我注意到你的'enable_sandbox_number'行包含第二个参数的整数。也许SQL Server正在转换为int。您可以将1更改为该行中的'1'吗?

答案 1 :(得分:0)

有趣的是没有引用1('enable_sandbox_number',1,1)。据推测它可以正常工作。如果您尝试0.84未引用会发生什么?