电子邮件地址的格式应该是 X@Y.Z 和 X,Y 可能是拉丁字符或数字,而 Z 可能只包含拉丁字母。 X、Y 和 Z 应该是非空字符串。
我目前正在使用 CHECK (Email LIKE '%_@__%.__%')
,但它仍然允许使用 Z 中的数字和特殊字符。
请注意,这是一项出于学习目的而构建的任务,并非最适合现实世界。
谢谢你帮助我。
答案 0 :(得分:0)
对于您描述的要求,您可以使用运算符 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。