将varchar值转换为十进制,同时将NULL和EMPTY字符串作为0处理

时间:2017-04-04 07:37:03

标签: sql sql-server string tsql sql-convert

我有一个varchar数据类型列,其中填充了诸如1.2,5.33之类的值,同时还具有NULL和EMPTY字符串。 我想将所有值转换为十进制,同时将NULL和EMPTY字符串视为0。

我可以使用CONVERT函数更改NULL或EMPTY字符串,如下所示。像这样我用varhcar 0替换NULL和EMPTY字符串。

DocumentRoot "/var/www/html"
ProxyPass /application1/resources !

但是,我想要做的是能够将这些数据(NewColumn1的输出)转换为十进制,但是当我将CASE语句放入CONVERT或CAST函数时,我会有错误。

我也尝试了以下内容。 C CASE WHEN Column1 = '' OR Column1= NULL THEN '0' ELSE Column1 END AS 'NewColumn1' 然而它失败了,因为在这里我没有处理EMPTY字符串。

任何想法如何解决这个问题。

2 个答案:

答案 0 :(得分:3)

简单方法:

SELECT CONVERT(DECIMAL(10, 4), ISNULL(NULLIF(Column1, ''), '0'))

您的CASE声明不起作用,因为您在Column1 = NULL时正在作弊。你sholud检查它IS NULL

CASE WHEN Column1 = '' OR Column1 IS NULL THEN '0' ELSE Column1 END AS 'NewColumn1'

答案 1 :(得分:2)

试试这个,

SELECT CAST(ISNULL(NULLIF(Column1, ''),0) AS DECIMAL(12,2)) FROM table