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

フィールドが空またはnullの場合は、これらのコンマを削除する必要があります。どうやら私はこれを間違ってやっています!

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 + ', ', ''),'')

アップデート

フィールドがnull許容でない場合は、次を使用します。

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