从SQL中的字符串列中删除最后一个字符

Cl_*_*233 1 t-sql sql-server substring

我在X列的每个值的末尾都有这些特殊字符"||〜||".我需要删除这些特殊字符.

现在我正在使用这种语法,但似乎并没有完成所有行的任务.

set [Customer Num] = substring(ltrim(rtrim([Customer Num])),3,len([Customer Num]))
Run Code Online (Sandbox Code Playgroud)

AK4*_*K47 5

试试这个选项,

Declare @myStr varchar(50) = 'amol~'
Run Code Online (Sandbox Code Playgroud)

- 如果想删除任何位置的char~

Select REPLACE(@myStr,'~','')

Set @myStr = '~amol~'
Select REPLACE(@myStr,'~','')

Set @myStr = '~am~ol~'
Select REPLACE(@myStr,'~','')
Run Code Online (Sandbox Code Playgroud)

- 如果要删除字符〜在最后位置和char存在〜是不一致的设置@myStr ='amol~'

Select Case When RIGHT(@myStr,1) = '~'
            Then LEFT(@myStr,len(@myStr) - 1)
            Else @myStr
        End
Run Code Online (Sandbox Code Playgroud)

如果您要替换||〜|| 试试这个,

Declare @myStr varchar(50) = 'amol ||~|| '

--If want to remove string ||~| of any position
Select REPLACE(@myStr,'||~||','')
Set @myStr = '||~||amol||~||'
Select REPLACE(@myStr,'||~||','')
Set @myStr = '||~||am||~||ol||~||'
Select REPLACE(@myStr,'||~||','')

--If want to remove string ||~| at Last position & existance of char ||~| is inconsistent
Set @myStr ='amol||~||'

Select Case When RIGHT(@myStr,5) = '||~||'
            Then LEFT(@myStr,len(@myStr) - 5)
            Else @myStr
        End
Run Code Online (Sandbox Code Playgroud)