我想对列进行约束,所以我只能插入字母M,F或T. 我尝试用REGEXP_LIKE创建一个,但是我得到了错误。
ALTER TABLE [TABLE_NAME] ADD CONSTRAINT
[CONSTR_NAME] CHECK (REGEXP_LIKE (COL, '^[M-M,F-F,T-T])\w+'));
答案 0 :(得分:3)
您可以这样做:
ALTER TABLE [TABLE_NAME] ADD CONSTRAINT [CONSTR_NAME]
CHECK (REGEXP_LIKE(COL, '^[MFT]*$'));
即,该列具有任意次数的字母M,F或T中的任何一个。这些是从字符串开头(^
)到结尾($
)允许的唯一字符。
注意:空字符串与此模式不匹配,因为它在Oracle中等同于NULL
(默认情况下)。
我还应该注意到你的问题有点含糊不清。如果该值只能是M,F或T中的一个,则使用IN
:
ALTER TABLE [TABLE_NAME] ADD CONSTRAINT [CONSTR_NAME]
CHECK (COL IN ('M', 'F', 'T') );