存在这样一些数据
,,,,dga bc,,aaaa,,,,
,,,,dga bc,,aaaa,,,
,,,,dga bc,,aaaa,,,
,,,,dga bc,,aaaa,,,,,,
需要将最后多余的逗号去掉
当数据中本来不存在空格的情况下,可以使用下面的方式简单的去掉
SELECT REPLACE(RTRIM(REPLACE('aa,bb,cc,,,',',',' ')),' ',',')
思路是把所有逗号换成空格 然后去掉最后的所有空格 再把空格换回来
这样做有个缺陷,就是当正常数据中间本身存在空格时,替换后会将空格变成逗号
新的方法采用sql function的方式实现
创建函数:
CREATE FUNCTION getstr(@oldstr nvarchar(512)) returns nvarchar(512) AS BEGIN declare @revOldStr nvarchar(512) set @revOldStr=reverse(@oldstr) while (charindex(',',@revOldStr,1)=1) begin set @revOldStr=substring(@revOldStr,2,len(@revOldStr)-1) end return reverse(@revOldStr) END GO
调用函数:
update [tableName] set [columnName]=dbo.getstr([columnName])
这样就不存在上一个方法,将本来正确的空格替换为逗号的情况了。