使用 VARCHAR 计算

Yoh*_*urg 3 sql-server t-sql sql-server-2008-r2

我正在尝试在 SQL Server 2008 R2 中进行计算,但我不断收到错误

消息 245,级别 16,状态 1,第 10
行将 varchar 值“.05”转换为数据类型 int 时转换失败。

更改表结构不是一种选择,有没有办法可以更改查询以便成功执行?

DECLARE @Test1 TABLE
(
  field1 VARCHAR(10),
  field2 INT
);

INSERT INTO @Test1 ( field1, field2 )
    VALUES ( '.05', 12 );

SELECT field1 / field2 
FROM @Test1;
Run Code Online (Sandbox Code Playgroud)

Eri*_*ing 6

这是你想要发生的吗?

DECLARE @Test1 TABLE
(
  field1 VARCHAR(10),
  field2 INT
);

INSERT INTO @Test1 ( field1, field2 )
    VALUES ( '.05', 12 );

SELECT field1 / CONVERT(DECIMAL(18, 2), field2)
    FROM @Test1;
Run Code Online (Sandbox Code Playgroud)

由于这被标记为答案:由于数据类型优先级,我将整数值转换为小数。字符串 '.05' 不能转换为整数,但它是一个完美的小数。

  • @MaxVernon 只是因为一个示例小数是两位。项目规格非常苗条;) (3认同)