将多个重复字符替换为一个

Avi*_*hol 2 sql t-sql sql-server-2008

我有一个varchar列,每个字段包含一个单词,但在单词前后有随机数字的管道字符.

像这样的东西:

MyVarcharColumn
'|||Apple|||||'
'|||||Pear|||||'
'||Leaf|'
Run Code Online (Sandbox Code Playgroud)

当我查询表时,我希望将多个管道替换为单个管道,因此结果如下:

MyVarcharColumn
'|Apple|'
'|Pear|'
'|Leaf|'
Run Code Online (Sandbox Code Playgroud)

无法弄清楚如何使用REPLACE函数解决它,有谁知道?

Vam*_*ala 6

一种方法是|用空格替换所有空格并在字符串的开头和结尾添加管道字符.

select '|'+replace(mycolumn,'|','')+'|' from tablename
Run Code Online (Sandbox Code Playgroud)


dfu*_*ako 5

vkp的方法绝对可以解决您的问题。另一种可行的方法(也可以在多种其他情况下使用)是使用三重REPLACE()

SELECT REPLACE(REPLACE(REPLACE('|||Apple|||||', '|', '><'), '<>',''), '><','|')
Run Code Online (Sandbox Code Playgroud)

该方法将允许您在多个字符串之间保持定界符,VPK先生的方法将连接字符串并在开始和结束处放置delim。

SELECT REPLACE(REPLACE(REPLACE('|||Apple|||||Banana||||||||||', '|', '><'), '<>',''), '><','|')
Run Code Online (Sandbox Code Playgroud)