【问题标题】:I am facing below error while running the query我在运行查询时遇到以下错误
【发布时间】:2021-10-13 17:16:07
【问题描述】:

我在运行查询时遇到以下错误

SELECT (0.01 * CAST(instruct_to_bal_avl_aft AS INT) )
FROM [FullYear].[dbo].[aa_momo_log]   

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

【问题讨论】:

  • 嗯...那是因为您的 varchar 值为 3.0,无法转换为 int。自己试试,你会看到的。选择 cast('3.0' as int)
  • 要解决这个问题,您可能需要先将字符串转换为小数。然后将小数转换为int。然后问自己为什么要将整数存储为小数的字符串表示形式。选择转换(整数,转换(十进制(7,2),'3.0'))
  • 经验法则,如果您要对列进行数学运算,您不希望将其存储为字符串。
  • Oracle、DB2 等在进行 cast('3.0' as int) 时返回 3。

标签: sql sql-server


【解决方案1】:

由于您要乘以浮点值,因此您可以将其转换为 DECIMAL 而不是 INT:

SELECT (0.01 * CAST(instruct_to_bal_avl_aft AS DECIMAL) )
FROM [FullYear].[dbo].[aa_momo_log] 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 2023-02-19
    • 2021-12-07
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多