kun*_*el1 5 sql t-sql sql-server sql-server-2005
我有一个这样的字符串:
`a|b^c|d|e^f|g`
Run Code Online (Sandbox Code Playgroud)
我想保持管道分隔,但删除胡萝卜子分隔,只保留该子分隔符的第一个值.
输出结果将是:
`a|b|d|e|g`
Run Code Online (Sandbox Code Playgroud)
有没有办法用简单的SQL函数做到这一点?
另一种选择,使用CHARINDEX,REPLACE和SUBSTRING:
DECLARE @OriginalString varchar(50) = 'a|b^c^d^e|f|g'
DECLARE @MyString varchar(50) = @OriginalString
WHILE CHARINDEX('^', @MyString) > 0
BEGIN
SELECT @MyString = REPLACE(@MyString,
SUBSTRING(@MyString,
CHARINDEX('^', @MyString),
CASE WHEN CHARINDEX('|', @MyString, CHARINDEX('^', @MyString)) > 0 THEN
CHARINDEX('|', @MyString, CHARINDEX('^', @MyString)) - CHARINDEX('^', @MyString)
ELSE
LEN(@MyString)
END
)
, '')
END
SELECT @OriginalString As Original, @MyString As Final
Run Code Online (Sandbox Code Playgroud)
输出:
Original Final
a|b^c^d^e|f|g a|b|f|g
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2785 次 |
| 最近记录: |