32rgl 发表于 2014-4-12 20:31:46

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('%%',@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;

页: [1]
查看完整版本: SQL在字符串中取出最长数字子序列