Sql server 如何在sql中拆分给定字符串

Sql server 如何在sql中拆分给定字符串,sql-server,split,Sql Server,Split,我有上面的字符串,我想在输出如下 Declare @string VARCHAR(8000) SELECT @string ='--testname="%SP_FVT_HOME%\Runner.py" --testCommandline="-slot %DPorting% -fvt \"--playlist=AP114 %PVR% --randomseed=%RANDOM_SP% --testdur=%TESTDURATION%\" -Production %PRODUCTION% 请帮助我

我有上面的字符串,我想在输出如下

Declare @string VARCHAR(8000)
SELECT @string ='--testname="%SP_FVT_HOME%\Runner.py" --testCommandline="-slot %DPorting% -fvt \"--playlist=AP114 %PVR% --randomseed=%RANDOM_SP% --testdur=%TESTDURATION%\" -Production %PRODUCTION% 

请帮助我

您可以编写函数或存储过程,也可以编写普通代码。大概是这样的:

%SP_FVT_HOME%,
%DPorting%,
%PVR%,
%RANDOM_SP%,
%TESTDURATION%,
%PRODUCTION% 
DECLARE@string VARCHAR(8000)
声明@temp表(字符串VARCHAR(100))
选择@string='--testname=“%SP\u FVT\u HOME%\Runner.py”--testCommandline=“-slot%DPorting%-FVT\”--playlist=AP114%PVR%--randomseed=%RANDOM\u SP%--testdur=%TESTDURATION%\”--Production%Production%'
声明@string_result VARCHAR(8000)=”
而CHARINDEX(“%”,@string)0
开始
选择@string=REPLACE(@string,LEFT(@string,CHARINDEX('%,@string)),'')
选择@string_result='%'+左(@string,CHARINDEX('%',@string))
选择@string=REPLACE(@string,LEFT(@string,LEN(@string\u result)-1),“”)
插入@temp SELECT@string\u结果
结束
从@temp中选择*

试试这个,它可能不是100%可靠的:

DECLARE @string VARCHAR(8000)
DECLARE @temp TABLE(string VARCHAR(100))
SELECT @string ='--testname="%SP_FVT_HOME%\Runner.py" --testCommandline="-slot %DPorting% -fvt \"--playlist=AP114 %PVR% --randomseed=%RANDOM_SP% --testdur=%TESTDURATION%\" -Production %PRODUCTION%'
DECLARE @string_result VARCHAR(8000) = ''

WHILE CHARINDEX('%', @string) <> 0
BEGIN
    SELECT @string = REPLACE(@string, LEFT(@string, CHARINDEX('%', @string)), '')
    SELECT @string_result = '%' + LEFT(@string, CHARINDEX('%', @string))
    SELECT @string = REPLACE(@string, LEFT(@string, LEN(@string_result)-1), '')
    INSERT INTO @temp SELECT @string_result
END

SELECT * FROM @temp

请格式化你的问题ễn Hả我三ều、 非常感谢,真的非常感谢你的才华。@RajPatel,因为你是新来的,所以请允许我一个提示:你说“谢谢”真是太好了,但读这篇文章会更亲切。
DECLARE @string VARCHAR(8000)
SELECT @string ='--testname="%SP_FVT_HOME%\Runner.py" --testCommandline="
  -slot %DPorting% -fvt \"--playlist=AP114 %PVR% 
  --randomseed=%RANDOM_SP% --testdur=%TESTDURATION%\" -Production %PRODUCTION%'

;WITH CTE as
(
  SELECT t.c.value('.', 'VARCHAR(2000)') val, row_number() over(ORDER BY (SELECT 1)) rn
  FROM (
    SELECT x = CAST('<t>' + 
      REPLACE(@string, '%', '</t><t>') + '</t>' AS XML)
) a
CROSS APPLY x.nodes('/t') t(c)
)
SELECT '%' + val + '%' FROM CTE 
WHERE rn % 2 = 0
%SP_FVT_HOME%
%DPorting%
%PVR%
%RANDOM_SP%
%TESTDURATION%
%PRODUCTION%