2013-03-11 63 views
1
UPDATE PropertyInformationDump 
    SET RegistryAdd = COALESCE(NULLIF(b.OCAREOF, ''), b.OCAREOF + ', ','') + 
     COALESCE(NULLIF(b.O1STADD, ''), b.O1STADD + ', ','') + 
     COALESCE(NULLIF(b.O2NDADD, '') + b.O2NDADD + ', ','') + 
     COALESCE(b.OSTNAME + ', ','') + COALESCE(b.OCITYST + ' ','') + 
     COALESCE(NULLIF(b.OZIP, ''), b.OZIP,'') 
    FROM dbo.vw_BRT b 
WHERE BRTNumber = b.PARCEL 
GO 

想要除去这些组合字符串前面的逗号。这里是正在发生的事情的一个例子:通过Coalasce和NULLIF删除引号括号?

, , 1350 SUSQUEHANNA AVE, PHILADELPHIA PA 19125 
MICHAEL J CARLONE, 10050 ROOSEVELT BLVD, PHILADELPHIA PA 191163924 

需要它总是看起来像:

1350 SUSQUEHANNA AVE, PHILADELPHIA PA 19125 

或只是如何一个与OCAREOF填充:

MICHAEL J CARLONE, 10050 ROOSEVELT BLVD, PHILADELPHIA PA 191163924 

我需要如果该字段为空或为空,请删除这些逗号。显然我做错了!

+0

你在什么DBMS上?我不认为在你的语法中你需要COALESCE,NULLIF和添加一个逗号应该全部处理它 – 2013-03-11 15:15:39

+0

SQL Server 2005 – korrowan 2013-03-11 15:16:56

回答

1

以下应该工作

UPDATE PropertyInformationDump 
SET RegistryAdd = 
    CASE WHEN Len(b.OCAREOF) > 0 THEN b.OCAREOF + ',' ELSE '' END + 
    CASE WHEN Len(b.O1STADD) > 0 THEN b.O1STADD + ',' ELSE '' END + 
    CASE WHEN Len(b.O2NDADD) > 0 THEN b.O2NDADD + ',' ELSE '' END + 
    CASE WHEN Len(b.OSTNAME) > 0 THEN b.OSTNAME + ',' ELSE '' END + 
    CASE WHEN Len(b.OCITYST) > 0 THEN b.OCITYST+ ',' ELSE '' END + 
    CASE WHEN Len(b.OZIP) > 0 THEN b.OZIP+ ',' ELSE '' END 
FROM dbo.vw_BRT b 
WHERE BRTNumber = b.PARCEL 

如果这些字段不是空的有数据,那么你可以忽略使用isNull()

+0

正确,但有时该字段为空,所以IsNull仍然会导致相同的问题。我得到,,, 1350年SUSQUEHANNA大道,费城宾夕法尼亚州,19125年,与代码。 – korrowan 2013-03-11 15:23:03

+0

@korrowan我已经更新为只在字段不为空时添加逗号。 – 2013-03-11 15:26:08

+0

好吧很酷这个作品。做了一些调整,以得到我需要的确切字符串,但效果很好。谢谢! – korrowan 2013-03-11 15:35:14

0

使用此:

COALESCE(NULLIF(b.OCAREOF + ', ', ''),'') 

UPDATE

如果你的字段不可为空使用这样的:使用SQL Server 2005

CASE WHEN LEN(b.OCAREOF) = 0 THEN '' ELSE b.OCAREOF + ', ' END + 
.... 
+0

如果我使用它,得到:,1350 SUSQUEHANNA AVE,PHILADELPHIA PA 19125 – korrowan 2013-03-11 15:19:02

+0

@korrowan你确定?你能在http://sqlfiddle.com上提供任何测试数据吗? – 2013-03-11 15:21:39

+0

@korrowan您的字段是否为空('')或NULL? – 2013-03-11 15:25:19