如何在sql中检查空字段

时间:2013-04-04 13:53:44

标签: sql sql-server sql-server-2008 tsql

我有一个SQL查询,它显示字段中的address1和address2为'address1,address2'。我的查询是

(S.Address1 + '  ,  ' + S.Address2)as Address1 

但是当Address2中的值为空时,它会显示               '地址1,'  我只需要显示address1.How我可以删除逗号

4 个答案:

答案 0 :(得分:5)

使用COALESCE

(COALESCE(S.Address1,'') + '  ,  ' + COALESCE(S.Address2, '')) as Address1 

但上述声明的问题是当,为空时它将跟踪address2,以修复

(COALESCE(S.Address1,'')  + COALESCE(' , ' + S.Address2, '')) as Address1

更新1

CASE WHEN S.Address2 = '' 
     THEN S.Address1
     ELSE S.Address1 + '  ,  ' + S.Address2
END  AS Addrss

答案 1 :(得分:3)

我认为J W很接近,但我相信你想要的实际公式是:

S.Address1 + COALESCE('  ,  ' + NULLIF(S.Address2,''),'') as Address1

(以下不相关,因为OP现在说列值为空,不是NULL

<击> 但是你还有另一个问题 - 上面的内容将无效(因为你显然已将CONCAT_NULL_YIELDS_NULL设置为OFF。需要启用此功能(通常将ANSI_NULLS设置为ON),since

  

在SQL Server CONCAT_NULL_YIELDS_NULL的未来版本中,ON始终为{{1}},任何将选项明确设置为OFF的应用程序都将生成错误。避免在新的开发工作中使用此功能,并计划修改当前使用此功能的应用程序。

<击>

答案 2 :(得分:1)

SELECT CONCAT(Address1                                      -- concatenation of address 1 with..
           , CASE WHEN ISNULL(NULLIF(Address2, ''))         -- if address 22 is null or empty
             THEN ''                                        -- concat with nothing
             ELSE CONCAT( '  ,  ', Address2)                -- else concat with a comma and address 2
             END
       )

Sqlfiddle here

CASE WHEN ISNULL(NULLIF(Address2, ''))用于确定address2是空还是空。 Details can be found here

答案 3 :(得分:1)

如果address2可以为null或空字符串,或者只是空格,则需要以下内容:

select address1 + 
case when length(trim(ifnull(address2, ''))) > 0 then ', ' + address2
else '' end