在sqlserver2008r2版本中实现正则表达式

对电话号码进行判断,对符合是手机号码的挑选出来:


CREATE     FUNCTION [dbo].[fn_motiontel_regular]
(
 @input VARCHAR(20)  -- the input text
)
RETURNS VARCHAR(20) AS 
BEGIN
 DECLARE @out CHAR(1)

 begin
  EXEC master.dbo.xp_pcre_match @input, '(13[4-9]|147|15[0-2]|15[7-9]|18[278])\d{8}',@out OUT
 end 
 --print @out
 if (@out<>1 or @out is null) begin
  EXEC master.dbo.xp_pcre_match @input, '(13[0-2]|15[56]|18[56])\d{8}',@out OUT
 end
 --print @out
 if (@out<>1 or @out is null) begin
  EXEC master.dbo.xp_pcre_match @input, '(133|153|18[09])\d{8}',@out OUT
 end
 
 if (@out<>1 or @out is null) begin
  set @input='1'
 end
 else begin
  set @input=substring(@input,len(@input)-10,11)
 end
 
 RETURN @input
 
END

猜你喜欢

转载自haroldxie.iteye.com/blog/1402194