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

posted @ 2022-11-17 10:58  蛤蜊皮  阅读(225)  评论(0)    收藏  举报