【问题标题】:Check for proper e-mail format in SQLite在 SQLite 中检查正确的电子邮件格式
【发布时间】:2021-02-16 15:09:06
【问题描述】:

电子邮件地址的格式应该是 X@Y.Z 和 X,Y 可以是拉丁字符或数字,而 Z 只能包含拉丁字母。 X、Y 和 Z 应该是非空字符串。

我目前正在使用CHECK (Email LIKE '%_@__%.__%'),但它仍然允许 Z 中的数字和特殊字符。

请注意,这是为了学习目的而构建的任务,并不最适合现实世界。

感谢您帮助我。

【问题讨论】:

标签: sqlite


【解决方案1】:

对于您描述的要求,您可以使用运算符GLOB 来构造CHECK 约束:

CREATE TABLE tablename(
  email TEXT,
  CHECK (
    email LIKE '%_@_%._%' AND
    LENGTH(email) - LENGTH(REPLACE(email, '@', '')) = 1 AND
    SUBSTR(LOWER(email), 1, INSTR(email, '.') - 1) NOT GLOB '*[^@0-9a-z]*' AND
    SUBSTR(LOWER(email), INSTR(email, '.') + 1) NOT GLOB '*[^a-z]*'
  )
)

查看简化的demo

【讨论】:

    猜你喜欢
    • 2010-11-14
    • 2013-09-10
    • 2013-09-05
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    • 2013-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多