2013-04-15 245 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