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