2013-03-11 55 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