[COLUMN]为空时的情况' 0' ......不工作

时间:2014-12-29 20:35:28

标签: sql-server-2012 case isnull

以下是我正在运行的一个简单查询,通过使NULL '0'来纠正SELECT CASE WHEN R.P IS NULL THEN '0' ELSE R.P END AS 'RectifyNull' FROM RBase r

NULL

当我希望结果中的字符串值0而不是NULL

时,这仍然会返回{{1}}个值

我做错了什么?

3 个答案:

答案 0 :(得分:4)

COALESCE怎么样?

 SELECT COALESCE(`R.P`, '0') as 'RectifyNull'
FROM 
    RBase r

答案 1 :(得分:2)

您需要的是使用“isnull”功能。 isnull将做的是它将使用您在第二个参数中指定的值替换空值。

前 -

select 
R.P
, isnull(R.P, '0') as replacingNulls
from RBase r

编辑:如果NULL值实际上不是NULL,而是字符串文字“NULL”,那么你应该像这样使用case语句:

select 
R.P
, case when R.P = 'NULL' then '0' else R.P end as replacingNulls
from RBase r

答案 2 :(得分:1)

你发布的应该工作,你确定你遇到NULL而不是空字符串吗? ( '')

另一种写作方式是:

SELECT isNull(r.p, '0') as 'RectifyNull'
FROM RBase r

处理空字符串('')和NULL字符串

SELECT 
    CASE 
        WHEN R.P IS NULL THEN '0' 
        WHEN r.p = 'NULL' THEN '0'
        ELSE R.P 
    END AS 'RectifyNull'
FROM 
    RBase r