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]