【发布时间】:2016-03-18 03:58:31
【问题描述】:
我目前正在尝试为 Oracle 数据库列构建一个约束。
ALTER TABLE section ADD CONSTRAINT section_days_chk CHECK (Days = 'M' OR Days = 'T' OR Days = 'W' OR Days = 'R' OR Days = 'F' OR Days = 'S' OR Days = 'U');
但是,我还需要约束以允许这些字符的任意组合。
我一直在试图弄清楚如何使用正则表达式“like”约束来做到这一点,而不允许任何其他字符。例如,只有字符 M 或 T 或 W 或 R 或 F 或 S 或 U 或任何字母组合应允许出现在“MWF”或“TR”或“M”中。我一直无法找到一个可以像这样限制输入的示例。
这是我尝试过的:
ALTER TABLE section ADD CONSTRAINT section_days_chk CHECK (regexp_like(Days,'[MTWRFSU]'));
但它允许任何字母,只要它们附加到集合中包含的一个,如“MD”。
有什么想法吗?找了几天,这个任务好像不是很常见。我找到的所有示例都假设您正在查找其中包含某个字符的单词。
【问题讨论】:
-
在在线对话中使用全部大写被视为大喊大叫。请编辑您的标题,使其不那么响亮。谢谢!
-
已经够大喊大叫了,人们都想睡觉了
-
抱歉,我在数据库查询中经常使用大写字母。