嵌套情况下的NULL值问题

时间:2016-06-22 22:48:47

标签: mysql sql sql-server tsql

长话短说我需要返回一个varchar值,如果存储的值为null但是eithers为我带来一个NULL值或varchar值这里是代码。

表中的

我有一些字段为null,有些字段有数据

CASE WHEN DS.DBIRTH+DS.MBIRTH+DS.YBIRTH = 
'' THEN CONVERT(VARCHAR(10),PT.CLIENTDBIRTHDATE,111)
ELSE 'INPUT DATE OF BIRTH'
CASE WHEN PT.CLIENTBIRTHDATE IS NULL THEN ''
 ELSE '1800-01-01'
 END 
 END AS BFIELD

这给我带来了类似的东西

         NULL
        1917/05/02
         NULL
        1923/02/02
        1967/01/05
        NULL

但我需要这样的东西

        01/01/1800
        1917/05/02
        01/01/1800
        1923/02/02
        1967/01/05
        01/01/1800

抱歉超级小道问题

2 个答案:

答案 0 :(得分:0)

您当前的case声明已关闭。我想你想要做的是将结果包装在coalesce

COALESCE(CASE 
             WHEN DS.DBIRTH+DS.MBIRTH+DS.YBIRTH = '' 
             THEN CONVERT(VARCHAR(10),PT.CLIENTDBIRTHDATE,111)
             ELSE 'INPUT DATE OF BIRTH'
         END, '01/01/1800') AS BFIELD

答案 1 :(得分:0)

如果没有Case语句,它应该像......一样简单。

select CONVERT(VARCHAR(10) , 
                CAST(ISNULL(DateColumn,'01/01/1800') AS DATE)
                ,111)