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

希望删除这些组合字符串前面的逗号。这是正在发生的事情的一个例子:

, , 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

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

4

2 回答 2

1

使用 SQL Server 2005 以下应该可以工作

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()

于 2013-03-11T15:19:28.497 回答
0

用这个:

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

更新

如果您的字段不可为空,请使用:

CASE WHEN LEN(b.OCAREOF) = 0 THEN '' ELSE b.OCAREOF + ', ' END +
....
于 2013-03-11T15:16:55.643 回答