2015-12-11 2 views
0
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% 

я выше строки, я хочу в выходной что-то вроде нижеКак разделить данную строку в SQL

%SP_FVT_HOME%, 
%DPorting%, 
%PVR%, 
%RANDOM_SP%, 
%TESTDURATION%, 
%PRODUCTION% 

Пожалуйста, помогите мне

+0

отформатируйте ваш вопрос. – DarkKnight

ответ

0

Вы можете написать функцию или магазин процедуры или написать простой код. Что-то вроде этого:

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 
+0

Nguyễn Hải Triều, Большое спасибо, действительно ваш великий ценит ваш талант. –

0

Попробуйте это, он не может быть 100% надежным, хотя:

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% 
+0

t-clausen.dk благодарит вас за работу. –

+1

@RajPatel, Поскольку вы новичок в SO, пожалуйста, позвольте мне дать один намек: очень любезно с вашей стороны сказать «Спасибо», но было бы еще добрее прочесть это. [Кто-то-ответы] (http://stackoverflow.com/help/someone-answers) – Shnugo