MS SQL 2008 - 迭代并替换两个字符之间的所有内容

时间:2017-10-18 15:26:18

标签: sql sql-server

我在使用MS SQL 2008 R2迭代并替换字符串中两个字符之间的所有内容时遇到了麻烦。

我目前正试图拉出^和〜字符之间的所有内容。我使用以下SQL:

DECLARE @string VARCHAR(255) = '0123^Hello~456^Filler Text~789^Even more filler text~'

SELECT STUFF(@string, PATINDEX('%^%',@string), PATINDEX('%~%',@string)+1 - PATINDEX('%^%',@string), replace(replace(@string, '^', ''), '~', ''))

我希望输出为" Hello Filler Text更多填充文字"。我有什么想法我做错了吗?

1 个答案:

答案 0 :(得分:0)

由于您的输出看起来只是从Sting读取Alpha值,因此您可以尝试以下SQL命令:

DECLARE @str NVARCHAR(MAX);
DECLARE @counter INT;
SET @str = '0123^Hello~456^Filler Text~789^Even more filler text~';
SET @counter = 0;
WHILE @counter <= 57
    BEGIN
        SET @str = REPLACE(@str, CHAR(0+@counter), ' ');
        SET @counter = @counter + 1;
    END;
SELECT LTRIM(RTRIM(REPLACE(REPLACE(@str, '^', ''), '~', '')));

输出

Hello   Filler Text   Even more filler text