我有一个链接,我想它的子字符串成许多碎片拿到号码
例如: -如何在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
如何在停止切割时停止切割? 有帮助吗?
使用分割功能,而不是 –