我有一个 varchar 列,每个字段包含一个单词,但单词前后有随机数量的管道字符。
类似这样的:
MyVarcharColumn
'|||Apple|||||'
'|||||Pear|||||'
'||Leaf|'
当我查询表时,我希望将多个管道替换为单个管道,因此结果将是这样的:
MyVarcharColumn
'|Apple|'
'|Pear|'
'|Leaf|'
不知道如何用 REPLACE 函数解决它,有人知道吗?
vkp的方法绝对可以解决你的问题。另一种有效的方法,并且也适用于各种其他情况,是使用三元组
REPLACE()
SELECT REPLACE(REPLACE(REPLACE('|||Apple|||||', '|', '><'), '<>',''), '><','|')
此方法将允许您在多个字符串之间保留分隔符,其中 VPK 先生的方法将连接字符串并在开头和结尾放置分隔符。
SELECT REPLACE(REPLACE(REPLACE('|||Apple|||||Banana||||||||||', '|', '><'), '<>',''), '><','|')
一种方法是将所有
|
替换为空格,并在字符串的开头和结尾添加管道字符。
select '|'+replace(mycolumn,'|','')+'|' from tablename
使用 SQL 2017 及以上版本
DECLARE @Input NVARCHAR(MAX) = 'Some-string-with----------lots-of-duplicated-problem-chars'
DECLARE @CharToCompact NVARCHAR(1) = '-'
DECLARE @Result NVARCHAR(MAX)
SELECT @Result = STRING_AGG(value, @CharToCompact)
FROM STRING_SPLIT(@Input, @CharToCompact)
WHERE value <> ''
产品
一些带有大量重复问题字符的字符串