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在字符串中取出最长数字子序列

上一篇:oracle中varchar2和nvarchar2的区别


下一篇:数据库1-初始数据库