如何用sql语句检测邮箱格式

 我来答
百度网友a526eca
推荐于2018-05-01 · TA获得超过244个赞
知道小有建树答主
回答量:149
采纳率:0%
帮助的人:62.8万
展开全部
自己没亲自写过 这是引用别人的 先申明一下 使用正则表达式比较好

CREATE FUNCTION F_EMAIL
(
@EMAIL VARCHAR(50)
)
RETURNS INT --返回1是正确;返回0是错误
BEGIN
DECLARE @VALUE INT,@LEN INT
DECLARE @TMP VARCHAR(50)
DECLARE @CHECK1 VARCHAR(50)
DECLARE @CHECK2 VARCHAR(50)
DECLARE @CHECK3 VARCHAR(50)
SET @TMP=RTRIM(LTRIM(@EMAIL))
SET @LEN=LEN(@TMP)
IF @LEN-LEN(REPLACE(@TMP,'@',''))=1 AND @LEN-LEN(REPLACE(@TMP,'.',''))>=1 AND CHARINDEX('@',@TMP)<>1
BEGIN
SET @CHECK1=LEFT(@TMP,CHARINDEX('@',@TMP)-1)
SET @CHECK2=STUFF(@TMP,1,CHARINDEX('@',@TMP),'')
SET @CHECK3=STUFF(@CHECK2,1,CHARINDEX('.',@CHECK2),'')
SET @CHECK2=LEFT(@CHECK2,CHARINDEX('.',@CHECK2)-1)
IF LEN(@CHECK1)>0 and LEN(@CHECK2)>0 AND LEN(@CHECK3)>0
BEGIN
IF PATINDEX('%[^a-zA-Z0-9._-]%',@CHECK1)>0
SET @VALUE=0
ELSE
BEGIN
IF PATINDEX('%[^a-zA-Z0-9_-]%',@CHECK2)>0
SET @VALUE=0
ELSE
BEGIN
IF CHARINDEX(UPPER(@CHECK2),UPPER('gmail,QQ,163,sina,yahoo'))>0
BEGIN
IF PATINDEX('%[^a-zA-Z0-9._-]%',@CHECK3)>0
SET @VALUE=0
ELSE SET @VALUE=1
END
ELSE SET @VALUE=0
END
END
END
ELSE SET @VALUE=0
END
ELSE SET @VALUE=0
RETURN @VALUE
END

--测试
create table tb
(
id int identity,
email varchar(50),
CONSTRAINT chk_email CHECK (dbo.F_EMAIL(email)=1)
)

insert into tb SELECT 'ASDF@163.COM'
insert into tb SELECT 'ASDF@1263.COM'
insert into tb SELECT 'ASDF@QQ.COM'
insert into tb SELECT 'ASDF@yahoo.COM'
insert into tb SELECT 'AS@DF@yahoo.COM'

/*
(所影响的行数为 1 行)

服务器: 消息 547,级别 16,状态 1,行 1
INSERT 语句与 COLUMN CHECK 约束 'chk_email' 冲突。该冲突发生于数据库 'Test',表 'tb', column 'email'。
语句已终止。

(所影响的行数为 1 行)

(所影响的行数为 1 行)

服务器: 消息 547,级别 16,状态 1,行 1
INSERT 语句与 COLUMN CHECK 约束 'chk_email' 冲突。该冲突发生于数据库 'Test',表 'tb', column 'email'。
语句已终止。*/

SELECT * FROM TB

/*
id email
----------- --------------------------------------------------
1 ASDF@163.COM
3 ASDF@QQ.COM
4 ASDF@yahoo.COM

(所影响的行数为 3 行)
*/
焱人科技
2024-10-30 广告
企业邮箱注册咨询热线:13350877465袁经理企业邮箱拥有自研飞天安全攻防体系,实现企业邮件安全畅邮,存储不限容量,同时支持企业多终端登录、钉+邮绑定、多域名管理、个性化定制企业形象等众多功能,为企业提供7*24小时VIP技术服务支持,... 点击进入详情页
本回答由焱人科技提供
百度网友5fa51f9f1
2010-05-17
知道答主
回答量:21
采纳率:0%
帮助的人:0
展开全部
检测邮箱格式 是用正则表达式

匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式