SQL查询 - 将数据类型varchar转换为数字

时间:2017-02-02 05:39:25

标签: sql

我在SQL查询中转换定价时遇到问题:

CASE CAST(R.Price AS decimal(10,2)) 
   WHEN 'NULL' 
      THEN '0'
END AS 'PricePoint',

不幸的是,它抛出了这个错误:

  

将数据类型varchar转换为数字时出错。

感谢您的帮助。

2 个答案:

答案 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',