SQL解析关键字符串
--解析关键字符串,如Name=张三&Sex=男&Age=24,则@SepStr为&,@KeyStr为Name=,返回字符串张三
--Select fnGetSepStrByKey('Name=张三&Sex=男&Age=24', 'Name=', '&', 1)
Create function dbo.fnGetSepStrByKey(
@ParamStr Varchar(6000), ----字符串
@KeyStr Varchar(200), ----关键字
@SepStr Varchar(200) = '&', ----分隔串
@CaseSensitive Bit = 0
)
Returns Varchar(2000)
As
begin
Declare @ParamValue Varchar(6000), @CurValue Varchar(2000),
@FindRes Bit, @Pos SmallInt
if @ParamStr = ''
Set @ParamValue = ''
else if @KeyStr = '' or @SepStr = ''
begin
Set @ParamValue = ''--@ParamStr
end
else
begin
if Left(@ParamStr, Len(@SepStr)) <> @SepStr
Set @ParamStr = @SepStr + @ParamStr
--忽略大小写
if @CaseSensitive = 1
begin
Set @ParamStr = Lower(@ParamStr)
Set @KeyStr = Lower(@KeyStr)
end
Set @ParamValue = ''
Set @Pos = CharIndex(@SepStr + @KeyStr, @ParamStr)
if @Pos = 0 Return ''
Set @ParamStr = SubString(@ParamStr, @Pos + Len(@SepStr + @KeyStr), Len(@ParamStr))
if @ParamStr = ''
Set @ParamValue = ''
else
begin
Set @Pos = CharIndex(@SepStr, @ParamStr)
if @Pos > 1
Set @ParamValue = SubString(@ParamStr, 1, @Pos - 1)
else
Set @ParamValue = @ParamStr
end
end
Return @ParamValue
end
GO
浙公网安备 33010602011771号