Mic*_*ker 50
CREATE TABLE emails (
email varchar
CONSTRAINT proper_email CHECK (email ~* '^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+[.][A-Za-z]+$')
);
Run Code Online (Sandbox Code Playgroud)
(正则表达式可能不完整,您可以搜索正则表达式,以便在整个网络上进行电子邮件匹配,并选择您最喜欢的那个).
Pet*_*aut 19
我建议使用现有的电子邮件地址解析模块,而不是编写自己的模式匹配.例如:
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))
);
Run Code Online (Sandbox Code Playgroud)
您还可以在定义表列时创建域并将其用作类型,例如
CREATE DOMAIN email AS TEXT CHECK (VALUE ~* '^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+[.][A-Za-z]+$');
CREATE TABLE emails (
email email
);
Run Code Online (Sandbox Code Playgroud)
这样,您无需在数据库中每次使用包含列的电子邮件时都重新定义正则表达式。
| 归档时间: |
|
| 查看次数: |
18171 次 |
| 最近记录: |