</p> -- 分隔符
: V8 j1 f# ^# E' H @base nvarchar(max),
B0 t+ p) _. O0 E' K6 y @index int' u7 p# N6 o* A0 J. t3 A0 r; n
set @separator='&'
7 Q% l' n/ K+ ~. o1 e -- 截取参数名开头的字符串. h" j( x6 q9 J& I
-- 'abc.do?pid=12124123&x=5'; L5 s u" G( Q& T2 I
-- 变为2 {" K: H+ R% @
-- 'pid=12124123&x=5'5 `, }2 I# ]# m h# `# e* }3 l
set @base = substring(@url,charindex(@param,@url,0),400)
" ]0 E& [$ N9 e _2 f8 F) P -- 替换掉参数头
% ~6 K2 h; k3 v5 p set @base = replace(@base,(@param+'='),'')
# X m6 d( e3 o' M; g* u -- 'pid=12124123&x=5'
# ]7 U! S. U0 K' b! {: A -- 变为
8 x* N2 ~5 H0 x: ] m- i0 f -- '12124123&x=5'1 q/ B) l2 i: x- a. T" R p5 T
-- 基于上述结果取得分隔符位置
" l5 I1 b( Y2 w! J4 ]4 R set @index = charindex(@separator,@base,0)
2 {, \; K6 O! K% Q& Q -- 当分割符存在则替换&符号开始的全部信息6 s' J8 f+ s* k3 j8 u) \
-- 当分割符不存在则直接返回$ A T. k; J( Y5 B. _! L, A
RETURN (case @index when 0 then @base else replace(@base,substring(@base,@index,400),'') end): H$ t: a A% ?& E9 G# F- S* h
END
3 V& E3 N* V% y* a9 v( f8 j GO$ i) g v8 f- j! c9 u: M
至于,这个字符串该有多大,400个字符应该足够用了。 |