如何创建一个约束在postgres中使用正则表达式?如何创建一个约束来检查邮件在postgres中是否有效?
21
A
回答
40
CREATE TABLE emails (
email varchar
CONSTRAINT proper_email CHECK (email ~* '^[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+[.][A-Za-z]+$')
);
(正则表达式可能是不完整的,你可以搜索为正则表达式匹配电子邮件所有网站上,并挑选你最喜欢的一个)。
17
我建议使用现有的电子邮件地址解析模块,而不是组成自己的模式匹配。例如:
CREATE OR REPLACE FUNCTION check_email(email text) RETURNS bool
LANGUAGE plperlu
AS $$
use Email::Address;
my @addresses = Email::Address->parse($_[0]);
return scalar(@addresses) > 0 ? 1 : 0;
$$;
CREATE TABLE emails (
email varchar
CONSTRAINT proper_email CHECK (check_email(email))
);
+0
我会说这是正确的方式,但亚马逊在RDS中不支持它(perl):-(。也许有一天。 – Jackie 2018-01-20 18:58:50
1
您还可以创建domain,并在定义表格列时将其用作类型。
CREATE DOMAIN email AS TEXT CHECK (VALUE ~* '^[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+[.][A-Za-z]+$');
CREATE TABLE emails (
email email
);
这样,每次在数据库中使用包含列的电子邮件时,都不需要重新定义正则表达式。
相关问题
- 1. 如何用Postgres检查约束来检查用户是否小于13岁?
- 2. 创建一个约束来检查列的值
- 3. 如何创建一个.htaccess查询来检查文件和cookie是否存在?
- 4. 如何检查邮件是否有效不是PHP
- 5. 如何在SQL中的两列之间创建检查约束?
- 6. 如何创建一个约束布局
- 7. 一个Oracle检查约束
- 8. 查找列是否有唯一约束
- 9. 如何检查CPLEX C++中是否存在约束?
- 10. 如何检查Sql服务器中是否存在约束?
- 11. 是否可以创建一个电子邮件约束为'@'的表格检查是为了确保电子邮件中有@符号
- 12. 添加一个约束,检查是否存在proc
- 13. 如何检查列表中元素之间的约束/是否约束编程?
- 14. Postgres的:约束检查和空值
- 15. 如何检查电子邮件帐户是否有效?
- 16. 如何检查电子邮件是否有效?
- 17. 我们如何检查电子邮件地址是否有效?
- 18. 如何在Z3py中创建一个约束来检查一个列表是否是另一个列表的排列?
- 19. 检查电子邮件在Google Apps脚本中是否有效
- 20. 检查电子邮件是否有效? (如果有@和)
- 21. MySQL是否支持检查约束?
- 22. 是否可以表达检查约束?
- 23. 检查一个属性是否有效
- 24. 创建一个类来检查sqlserver中的值是否为空
- 25. NUnit中是否存在一个只有一个约束?
- 26. 如何创建一个IF语句来检查一个值是否最接近?
- 27. 约束检查必须是其中一个或另一个
- 28. 是否可以创建一个通用约束方法?
- 29. 在创建表格时检查约束条件返回错误
- 30. 在JavaScript中,是否有一个事件来检查变量名是否刚创建?
谢谢。这工作完美。 – nunos 2011-04-17 00:14:50
我们如何使用ADD CONSTRAINT和MODIFY varient来完成ALTER命令的工作? – Mahesha999 2013-01-07 11:44:05
你是什么意思添加和修改?添加你做一些像'ALTER TABLE emails ADD CONSTRAINT proper_email CHECK ....'我相信。类似修改,只需检查文档。或者,就像他们在这里说的 - 你试过了什么? – 2013-01-07 11:57:47