我有一个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字符串。
任何想法如何解决这个问题。
答案 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