2013-04-15 198 views
1

我有表test(ID Numeric(11,0), report varchar(255)) 和數據看起來低於SQL替換逗號的表

1 ,Age,,,,,,family_status,,,,,, 
2 ,,,,,,,,retaliation,hostile environment,,,, 
3 ,,,,,,,,,,,,, 
4 ,,,,,,,,retaliation,,,,, 
5 ,,,,,,,,,hostile environment,,,, 
6 ,Age,,,,,,,,,,,, 
7 ,,,,national_origin,,,,,,,,, 
8 Sex,,,,,,,,,,,,, 
9 ,,,,national_origin,,disability,,retaliation,,,,, 
10 Sex,,,,,,,,retaliation,,,,, 
11 ,,,,,,,, 

,我想通過更換或使用任何其他數據劃線刪除多餘的逗號,因此及時更新該表的一排這些數據看起來

1 Age,family_status 
2 retaliation,hostile environment 
3 
4 retaliation 
5 hostile environment 
6 Age 
7 national_origin, 
8 Sex 
9 national_origin,disability,retaliation 
10 Sex,retaliation 
11 

我嘗試使用下面的語句,但不知道如何來遍歷這樣它會檢查並刪除所有逗號

UPDATE table test SET report = replace(report , ',,', ',') 
+0

你在使用,在某些平臺上,你可以使用遞歸CTE – Hogan

+1

這可以在編寫C#或Java或者你選擇的技術將對整個程序可以更好地做平臺,你只限於做數據庫? – Rafael

回答

1

如果你只是在做這個作爲(你期望重複使用,而不是一個腳本程序),直到你得到0行更新

UPDATE table test SET report = replace(report , ',,', ',') 
WHERE report like '%,,%' 

如果你總是可以只運行此查詢反覆一次性的任務需要一遍又一遍地做到這一點,或把它在一個程序中,我建議您使用程序(非SQL代碼)做替換,你有更好的文本操作命令。

如果你不與激動,檢查了this blog article我寫了一個字符串替換重複空間的類似的問題。

+0

哇...謝謝約翰迭代的解決方案比遞歸快 – BillB