该字段的值不能是0、000000000、99999999之类的值。我该如何在oracle中表达呢?我会用正则表达式来做吗?
您可以使用正则表达式^(.)\1*$
来检测仅由一个字符的一个或多个重复组成的字符串:
SELECT *
FROM table_name
WHERE REGEXP_LIKE( id,'^(.)\1*$' );
如果要向列添加条件,则可以为每个条件添加约束。一些例子可能是:
ALTER TABLE table_name ADD CONSTRAINT id_longer_than_2
CHECK ( LENGTH( id ) > 2 );
ALTER TABLE table_name ADD CONSTRAINT id_must_contain_lower_case
CHECK ( REGEXP_COUNT( id,'[[:lower:]]' ) > 0 );
ALTER TABLE table_name ADD CONSTRAINT id_must_contain_upper_case
CHECK ( REGEXP_COUNT( id,'[[:upper:]]' ) > 0 );
ALTER TABLE table_name ADD CONSTRAINT id_must_contain_digit
CHECK ( REGEXP_COUNT( id,'[[:digit:]]' ) > 0 );
ALTER TABLE table_name ADD CONSTRAINT id_must_not_repeat
CHECK ( NOT REGEXP_LIKE( id,'^(.)\1+$' ) );
ALTER TABLE table_name ADD CONSTRAINT id_is_only_alphanumeric
CHECK ( REGEXP_LIKE( id,'^[[:alnum:]]+$' ) );
本文链接:https://www.f2er.com/1395744.html