【发布时间】:2020-09-14 14:10:28
【问题描述】:
我想在 Oracle 中编写一个函数来检查特定的电子邮件域。就像我需要找到 gmail 对于任何其他电子邮件域,它应该返回 Invalid
如果我通过第一个,它应该返回 Valid,如果我通过第二个,它应该返回 Invalid。
【问题讨论】:
-
请展示你的努力,到目前为止你尝试过什么来解决这个问题..?
我想在 Oracle 中编写一个函数来检查特定的电子邮件域。就像我需要找到 gmail 对于任何其他电子邮件域,它应该返回 Invalid
如果我通过第一个,它应该返回 Valid,如果我通过第二个,它应该返回 Invalid。
【问题讨论】:
就这么简单:
create or replace function f_validate_domain(i_email_id in varchar2, i_domain_name in varchar2 default 'gmail.com')
return varchar2
is
begin
return case when instr(i_email_id,'@'||i_domain_name) > 1 then 'Valid' else 'Not Valid' end;
end;
To test:
begin
dbms_output.put_line(f_validate_domain('axy@gmail.com'));
dbms_output.put_line(f_validate_domain('axy@gmail.co.in', 'gmail.com'));
dbms_output.put_line(f_validate_domain('axy@yahoo.co.in', 'gmail.com'));
end;
输出:
【讨论】:
您可以根据需要使用以下正则表达式模式。以下代码用于演示目的。
create function(email varchar2(40))
return number(1)
is
result number(1)
begin
if regexp_like(email, '[a-zA-Z0-9]{3,}@gmail.com$') then
result := 1;
else
result := 0;
end if;
return 0;
end;
【讨论】: