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

时间:2016-05-06 19:08:50

标签: sql sql-server-2008 tsql

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

这样的事情:

MyVarcharColumn
'|||Apple|||||'
'|||||Pear|||||'
'||Leaf|'

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

MyVarcharColumn
'|Apple|'
'|Pear|'
'|Leaf|'

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

2 个答案:

答案 0 :(得分:6)

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

select '|'+replace(mycolumn,'|','')+'|' from tablename

答案 1 :(得分:3)

vkp的方法绝对解决了你的问题。另一种有效的方法,也适用于其他各种情况,使用三REPLACE()

SELECT REPLACE(REPLACE(REPLACE('|||Apple|||||', '|', '><'), '<>',''), '><','|')

此方法允许您在多个字符串之间保留分隔符,其中VPK先生的方法将连接字符串并在开头和结尾放置一个分隔符。

SELECT REPLACE(REPLACE(REPLACE('|||Apple|||||Banana||||||||||', '|', '><'), '<>',''), '><','|')