EMAIL地址有效性验证

if object_id('fnCheckEmail') is not null
      drop function fnCheckEmail
GO
----创建验证函数,返回值为1表示正确,否则格式错误
create function fnCheckEmail(@Email varchar(1000))
returns bit
as
begin
declare @rtv bit
if
    charindex(' ',@email) > 0 or     /*含有空格*/
    len(@email) - len(replace(@email,'.','')) > 1 or /*'.'超过1个*/
    len(@email) - len(replace(@email,'@','')) > 1 or /*'@'超过1个*/
    right(@email,1) = '.' or   /*以'.'结尾*/
    right(@email,1) = '@' or   /*以'@'结尾*/
    left(@email,1) = '.' or    /*以'.'开头*/
    left(@email,1) = '@' or    /*以'.'开头*/
    charindex('.',@email)-charindex('@',@email) < 0 or /*'.'在'@'前面*/
    charindex('@',@email)-charindex('.',@email) = 1 or /*'@'与'.'相邻*/
    charindex('.',@email)-charindex('@',@email) = 1    /*'@'与'.'相邻*/
    set @rtv = 0
else
    set @rtv = 1
return @rtv
end

GO
----创建测试数据
declare @t table(email varchar(1000))
insert @t
select 'ab.cxyz@s.com' union all
select 'ab@xyz@s.com' union all
select '@abc@xyz.com' union all
select 'abcxyz.com@' union all
select '.abcxyz@com' union all
select 'abc@xyz@com.' union all
select 'ab.c@xyzcom' union all
select 'abc@.com' union all
select 'abc@xyz.com' union all    /*格式正确*/
select 'ab c@xyzcom'
----验证
select *,case dbo.fnCheckEmail(email) when 1 then '正确' else '错误' end from @t

----清除测试环境
drop function fnCheckEmail
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值