我在SQL查询中转换定价时遇到问题:
CASE CAST(R.Price AS decimal(10,2))
WHEN 'NULL'
THEN '0'
END AS 'PricePoint',
不幸的是,它抛出了这个错误:
将数据类型varchar转换为数字时出错。
感谢您的帮助。
答案 0 :(得分:0)
您将NULL比较为Varchar,因此它给出错误。
使用以下查询
CASE CAST(R.Price AS decimal(10,2)) WHEN NULL THEN '0'END AS 'PricePoint',
答案 1 :(得分:0)
如果这是针对 SQL Server ,那么您必须使用此代码来使用IS NULL
检查(而不是“普通”等式运算符):
CASE
WHEN CAST(R.Price AS decimal(10, 2)) IS NULL
THEN '0'
END AS 'PricePoint',
另外:如果您想要返回数字值0
,您应该再次忘记值周围的单引号 - 将它放在单引号中返回字符串值(而不是int
):
CASE
WHEN CAST(R.Price AS decimal(10, 2)) IS NULL
THEN 0
END AS 'PricePoint',
更新:如果您想要退回非NULL
的任何内容的常规价格,请在ELSE
中添加CASE
条款:
CASE
WHEN CAST(R.Price AS decimal(10, 2)) IS NULL
THEN 0
ELSE CAST(R.Price AS decimal(10, 2))
END AS 'PricePoint',