Sql server 2008 r2 SQL Server 2008R2:评估三列事例语句还是合并?

Sql server 2008 r2 SQL Server 2008R2:评估三列事例语句还是合并?,sql-server-2008-r2,nested-queries,Sql Server 2008 R2,Nested Queries,几天来,我一直在研究如何实现以下目标: 我有一张桌子,上面有其他地址,但我只需要拉一下这个城市。然而,城市可能在第5、第4或第3场。我想做的是,用通过计算这三个字段的NULL值而得到的值填充另一个名为city的字段,这一点非常失败 这就是我到目前为止得到的结果,尽管我没有收到任何错误,但显示的唯一值是field4,因为field5为null或“”。但如果字段4也为空,则城市字段为空。出于某种原因,我的查询没有查看字段3,如果有值,则不会填充该值。救命啊 这是第一次尝试: altcity='Y'和

几天来,我一直在研究如何实现以下目标: 我有一张桌子,上面有其他地址,但我只需要拉一下这个城市。然而,城市可能在第5、第4或第3场。我想做的是,用通过计算这三个字段的NULL值而得到的值填充另一个名为city的字段,这一点非常失败

这就是我到目前为止得到的结果,尽管我没有收到任何错误,但显示的唯一值是field4,因为field5为null或“”。但如果字段4也为空,则城市字段为空。出于某种原因,我的查询没有查看字段3,如果有值,则不会填充该值。救命啊

这是第一次尝试: altcity='Y'和(field5为null或field5='')时的情况 然后是其他4个 altcity='Y'和(字段4为空或字段4='')时的情况 然后是第三场 其他领域5 终止
结束为city有点老生常谈,但在运行数据时,以下内容是什么样子的:

CASE 
    WHEN altcity='y' THEN   
                        CASE
                            WHEN field5 is not null AND field5 != '' THEN field5
                            WHEN ((field5 is null) OR (field5 = '')) and ((field4 is not null) AND (field4 != ''))  then field4
                            WHEN (((field5 is null) OR (field5 = '')) and ((field4 is null) OR (field4 = ''))) and ((field3 is not null) AND (field3 != '')) then field3
                            ELSE '?'
                        END
    END

看过数据示例后,现在可以理解,
COALESCE
不起作用,因为它依赖于数据中的NULL。在C#中,有一个字符串函数
IsNullOrEmpty
处理这些情况。T-SQL没有这个功能,但是有这样的例子可以帮助创建该功能,并且可以整理案例陈述

感谢@Matt的快速响应!我已经针对我的数据运行了建议,现在唯一正在提取的字段是field5,而不是field5为空时的任何其他字段。任何其他建议?field5实际上是空的还是仅仅是空的(空字符串)?field5可以是空的或空的。行的一个示例是altadd='Y',field3='Yorktown',field4=,field5=null;然后另一行是altadd='Y',field3='Yorktown',field4=NULL,field5=;嗨@DeanaJacobus我已经更新了案例陈述,试试看。
CASE 
    WHEN altcity='y' THEN   
                        CASE
                            WHEN field5 is not null AND field5 != '' THEN field5
                            WHEN ((field5 is null) OR (field5 = '')) and ((field4 is not null) AND (field4 != ''))  then field4
                            WHEN (((field5 is null) OR (field5 = '')) and ((field4 is null) OR (field4 = ''))) and ((field3 is not null) AND (field3 != '')) then field3
                            ELSE '?'
                        END
    END