【问题标题】:Conversion failed when converting the varchar to numeric and displaying numeric values only将 varchar 转换为数字并仅显示数值时转换失败
【发布时间】:2021-09-03 14:36:51
【问题描述】:
select * 
    ,iif (DAYSS>=1, DAYSS, 'Out of Stock') as NEWDA
    from TABLE3

出错了

将数据类型 varchar 转换为数字。

当尝试将 numeric 转换为 varchar 但这也是一个错误

use case when isnumeric (DAYSS) >=0 then CAST(DAYSS as varchar) 

将 varchar 值“7.350000”转换为数据类型 int 时转换失败。

【问题讨论】:

  • 标记您真正使用的RDBMS。 SQL Server 和 MySQL 完全不同。但是,错误告诉您问题,'7.350000' 不是有效的int 值;整数没有小数位。
  • 如果这是 SQL Server,您可能需要查看 try_convert

标签: sql


【解决方案1】:

我强烈推荐case 而不是iif(),但这是同样的问题。表达式引用单一类型的单一值。如果一个分支(“then”)是一个数字,另一个是一个字符串(“else”),那么结果就是一个数字。

所以,将数字转换为字符串:

select t3.*,
       (case when DAYSS >= 1 then cast(DAYSS as varchar(255))
             else 'Out of Stock'
        end) as NEWDA
from TABLE3 t3;

【讨论】:

    猜你喜欢
    • 2011-05-01
    • 2020-08-06
    • 2011-12-01
    • 2016-09-21
    • 2012-04-10
    • 1970-01-01
    相关资源
    最近更新 更多