У меня есть ссылка, и я хочу, чтобы подстроки его на много частей, чтобы получить номера
пример: -Как подстроить пустую фразу в sql?
&OR=-12&MR=24560&MM=20&Mx=110&EOW=1&OW=50&OV=12&CV=-1
Я хочу -12, 24560, 20, ... и т.д. , и я это сделал при использовании этого кода
DECLARE @strprog AS NVARCHAR(MAX)--,@strLM AS NVARCHAR(20),@strLOW AS NVARCHAR(20),@strLOR AS NVARCHAR(20),@strLCR AS NVARCHAR(20),
DECLARE @OR AS SMALLINT, @MR AS SMALLINT, @MM AS SMALLINT, @Mx AS SMALLINT, @EOW AS SMALLINT, @OW AS SMALLINT, @OV AS SMALLINT, @CV AS SMALLINT
SET @strprog='WorkFlow/WFmain.aspx?sservice=WFAppraisalManage&showrep=1&applyRole=0&DisableApproval=1&grbCompQuest=1&EnablecompletionChk=1
&MaxCompletionNo=110&ProficiencyValidation=0&objresulttxt=0
&OR=-12&MR=24560&MM=20&Mx=110&EOW=1&OW=50&OV=12&CV=-1'
SET @OR= SUBSTRING(@strprog,CHARINDEX('&OR=',@strprog)+4,CASE WHEN CHARINDEX('&',@strprog,CHARINDEX('&OR=',@strprog)+4) <=0 THEN LEN(@strprog)+1 ELSE CHARINDEX('&',@strprog,CHARINDEX('&OR=',@strprog)+4) END -CHARINDEX('&OR=',@strprog)-4 )
SELECT @OR
SET @MR= SUBSTRING(@strprog,CHARINDEX('&MR=',@strprog)+4,CASE WHEN CHARINDEX('&',@strprog,CHARINDEX('&MR=',@strprog)+4) <=0 THEN LEN(@strprog)+1 ELSE CHARINDEX('&',@strprog,CHARINDEX('&MR=',@strprog)+4) END -CHARINDEX('&MR=',@strprog)-4 )
SELECT @MR
SET @MM= SUBSTRING(@strprog,CHARINDEX('&MM=',@strprog)+4,CASE WHEN CHARINDEX('&',@strprog,CHARINDEX('&MM=',@strprog)+4) <=0 THEN LEN(@strprog)+1 ELSE CHARINDEX('&',@strprog,CHARINDEX('&MM=',@strprog)+4) END -CHARINDEX('&MM=',@strprog)-4 )
SELECT @MM
SET @Mx= SUBSTRING(@strprog, CHARINDEX('&Mx=',@strprog)+4 ,CASE WHEN CHARINDEX('&',@strprog,CHARINDEX('&Mx=',@strprog)+4) <=0 THEN LEN(@strprog)+1 ELSE CHARINDEX('&',@strprog,CHARINDEX('&Mx=',@strprog)+4) END -CHARINDEX('&Mx=',@strprog)-4 )
SELECT @Mx
SET @EOW= SUBSTRING(@strprog,CHARINDEX('&EOW=',@strprog)+5,CASE WHEN CHARINDEX('&',@strprog,CHARINDEX('&EOW=',@strprog)+5) <=0 THEN LEN(@strprog)+1 ELSE CHARINDEX('&',@strprog,CHARINDEX('&EOW=',@strprog)+5) END -CHARINDEX('&EOW=',@strprog)-5)
SELECT @EOW
SET @OW= SUBSTRING(@strprog,CHARINDEX('&OW=',@strprog)+4,CASE WHEN CHARINDEX('&',@strprog,CHARINDEX('&OW=',@strprog)+4) <=0 THEN LEN(@strprog)+1 ELSE CHARINDEX('&',@strprog,CHARINDEX('&OW=',@strprog)+4) END -CHARINDEX('&OW=',@strprog)-4 )
SELECT @OW
SET @OV= SUBSTRING(@strprog,CHARINDEX('&OV=',@strprog)+4,CASE WHEN CHARINDEX('&',@strprog,CHARINDEX('&OV=',@strprog)+4) <=0 THEN LEN(@strprog)+1 ELSE CHARINDEX('&',@strprog,CHARINDEX('&OV=',@strprog)+4) END -CHARINDEX('&OV=',@strprog)-4 )
SELECT @OV
SET @CV= SUBSTRING(@strprog,CHARINDEX('&CV=',@strprog)+4,CASE WHEN CHARINDEX('&',@strprog,CHARINDEX('&CV=',@strprog)+4) <=0 THEN LEN(@strprog)+1 ELSE CHARINDEX('&',@strprog,CHARINDEX('&CV=',@strprog)+4) END -CHARINDEX('&CV=',@strprog)-4 )
SELECT @CV
проблема связь может быть отрезан в любое место например: -
&OR=-12&MR=24560&MM=20
Как я могу прекратить резку, когда она достигнет конца? любая помощь?
Использование функция разделения вместо –