将 varchar 转换为数字并仅显示数值时转换失败
Posted
技术标签:
【中文标题】将 varchar 转换为数字并仅显示数值时转换失败【英文标题】:Conversion failed when converting the varchar to numeric and displaying numeric values only 【发布时间】: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
【参考方案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;
【讨论】:
以上是关于将 varchar 转换为数字并仅显示数值时转换失败的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 2012 将数据类型 varchar 转换为数字时出错