MS SQL 2008-迭代并替换两个字符之间的所有内容
我在使用MS SQL 2008 R2迭代和替换字符串中两个字符之间的所有内容时遇到问题 我目前正在尝试提取^和~字符之间的所有内容。我正在使用以下SQL: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(
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不是该作业的最佳工具。