SQL在字符串中取出最长数字子序列

CREATE FUNCTION dbo.GetJZZH(@StrJZZH nvarchar(200))
RETURNS nvarchar(100)  AS
BEGIN
  --声明变量
  --函数返回值
  declare @iRet nvarchar(100)
  --循环用的变量
  declare @i int
  --记录字符串长度
  declare @LenStr int
  --记录字符串中当前字符
  declare @CurStr varchar(1)
  --初始化函数返回值
  set @iRet=‘‘
  --如果字符串里没有数字,直接返回
  if PATINDEX(‘%[0-9]%‘,@StrJZZH)=0
  goto ext
  --变量初始化
  select @LenStr=len(@StrJZZH),@i=1
  while @i<=@LenStr
  begin
   set @CurStr=substring(@StrJZZH,@i,1)
   --如果是数字或者x
   if ((@CurStr>=‘0‘) and (@CurStr<=‘9‘)) or (@CurStr=‘x‘) or (@CurStr=‘X‘)
   begin
     --数字就记录下来
     set @iRet=@iRet+@CurStr   
   end
   --出现的是字母
   else
   begin
     if len(@iRet)>6
     begin
       goto ext
     end
     else
     begin
       set @iRet=‘‘
     end   
   end  
   set @i=@i+1
  -- while循环结尾end 
  end 
  ext:
  return @iRet
END;

SQL在字符串中取出最长数字子序列,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。