我有一个字符串列,用于存储数字。如何添加约束以确保该数字仅包含6
或7
。示例676666
但我不想要565677
答案 0 :(得分:4)
添加检查约束:
CONSTRAINT check_numbers CHECK (regexp_like(the_column, '^[67]+$'))
这需要最后一位数。
答案 1 :(得分:1)
添加此约束。我没有运行它,但请尝试
CONSTRAINT CHECK_6_7_ONLY CHECK (regexp_replace(trim(column_name),'6|7','') is null)
编辑:在处理字符串时添加了trim
答案 2 :(得分:1)
另一种选择是使用translate
:
create table t42 (
foo varchar2(10),
constraint sixesorsevens check (translate(foo, 'x67', 'x') is null)
);
Table T42 created.
insert into t42 (foo) values (null);
1 row inserted.
SQL> insert into t42 (foo) values ('676666');
1 row inserted.
SQL> insert into t42 (foo) values ('576666');
insert into t42 (foo) values ('576666')
*
ERROR at line 1:
ORA-02290: check constraint (MYSCHEMA.SIXESORSEVENS) violated
...但regexp_like()
版本对于必须维护此版本的人来说可能更清楚。