MS Sqlserver删除字段最后的多余字符

存在这样一些数据

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

这样就不存在上一个方法,将本来正确的空格替换为逗号的情况了。

 

posted @ 2019-07-23 14:00  龍☆  阅读(2038)  评论(0编辑  收藏  举报