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

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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM