Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MS SQL 2008-迭代并替换两个字符之间的所有内容_Sql_Sql Server - Fatal编程技术网

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

MS SQL 2008-迭代并替换两个字符之间的所有内容,sql,sql-server,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(

我在使用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甚至更多Filler Text”。知道我做错了什么吗?

由于您的输出看起来像是只从
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, '^', ''), '~', '')));

由于您的输出看起来像是从
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, '^', ''), '~', '')));

虽然您可以编写函数来完成此操作,但SQL Server不是该作业的最佳工具。尽管您可以编写函数来完成此操作,但SQL Server不是该作业的最佳工具。