Sqlite
Sqlite - 使用檢查限制一個字元串的不同部分的字元
我必須確保任何插入的電子郵件都具有以下格式:“X@YZ”
X 和 Y 只能包含字母和數字,Z 只能包含字母。
我試過這樣的東西,但我不知道如何分別限制 X、Y 和 Z 的字元。
Create Table User( Mail varchar check(Mail NOT GLOB '*[^A-Za-z0-9@.]*' AND Mail LIKE '%_@%_._%'));
所以我想出瞭如何做我想做的事。我使用了子字元串並限制了電子郵件每個單獨部分的字元。
CREATE TABLE User( EMail varchar NOT NULL COLLATE NOCASE check( (substr(EMail, INSTR(EMail,'.')+1) NOT GLOB '*[^A-Za-z]*') AND (substr(EMail,1, INSTR(EMail,'@')-1) NOT GLOB '*[^A-Za-z0-9]*') AND (substr(EMail, INSTR(EMail,'@')+1, ((INSTR(EMail,'.')-1) - (INSTR(EMail,'@')+1))+1 ) NOT GLOB '*[^A-Za-z0-9]*') AND EMAIL LIKE '%_@%_.%_')