gpt4 book ai didi

sql - 验证 sql/oracle 中的电子邮件/邮政编码字段

转载 作者:行者123 更新时间:2023-12-04 23:43:41 24 4
gpt4 key购买 nike

对于以下方面的一些建议将不胜感激 - 是否可以通过 oracle 中的 sql 中的某种检查约束来验证电子邮件和邮政编码字段?或者像我怀疑带有正则表达式的 pl/sql 那样的事情?

谢谢

最佳答案

这是电子邮件地址的正则表达式语法,包括引号

'[a-zA-Z0-9._%-]+@[a-zA-Z0-9._%-]+\.[a-zA-Z]{2,4}'

因此,您可以在 where 子句或 regexp_substr() 中使用 regexp_like() 来检查您的字段是否包含有效的电子邮件地址。这是一个示例 - 您将看到 regexp_substr() 在缺少 .domain 的地址上返回 NULL,这导致子字符串验证失败。从那里您可以围绕它构建一个检查约束,或者使用触发器(yuck)等强制执行它。
SQL> desc email
Name Null? Type
----------------------------------------- -------- ----------------------------
EMAIL_ID NUMBER
EMAIL_ADDRESS VARCHAR2(128)


SQL> select * from email;

EMAIL_ID EMAIL_ADDRESS
---------- ----------------------------------------
1 NEIL@GMAIL.COM
2 JOE@UTAH.GOV
3 lower_name@lower.org
4 bad_address@missing_domaindotorg


SQL> @qry2
SQL> column email_address format a40
SQL> column substr_result format a30
SQL> SELECT email_address
2 , regexp_substr(email_address,'[a-zA-Z0-9._%-]+@[a-zA-Z0-9._%-]+\.[a-zA-Z]{2,4}') substr_result
3 FROM email
4 /

EMAIL_ADDRESS SUBSTR_RESULT
---------------------------------------- ------------------------------
NEIL@GMAIL.COM NEIL@GMAIL.COM
JOE@UTAH.GOV JOE@UTAH.GOV
lower_name@lower.org lower_name@lower.org
bad_address@missing_domaindotorg

使用相同的数据,这里是一个只限制有效电子邮件地址的查询,使用 REGEXP_LIKE
SQL> column email_address format a40
SQL> column substr_result format a30
SQL> SELECT email_address
2 FROM email
3 WHERE REGEXP_LIKE (email_address, '[a-zA-Z0-9._%-]+@[a-zA-Z0-9._%-]+\.[a-zA-Z]{2,4}');

EMAIL_ADDRESS
----------------------------------------
NEIL@GMAIL.COM
JOE@UTAH.GOV
lower_name@lower.org

搜索 SQL Reference 的内容页for regexp 查看正则表达式支持。

关于sql - 验证 sql/oracle 中的电子邮件/邮政编码字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/787167/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com