我们如何在oracle中表示重复数字?

我有一个带有ID值的字段。

a)该字段的值不能是0,00000000,99999999之类的值。如何在oracle中表示呢?我会用正则表达式来做吗?

b)该字段不能全是字母,也不能包含句点或逗号之类的字符。 我做了如下的选项a,但这是真的吗?

选择x_ID 来自表1 哪里regexp_like(x_ID,'[a-zA-Z]')

edit:不希望包含相同的数字值,例如77777777。它的长度不能短于3个字符,例如0、12、11。但是,它的值可以像12345678。AbCdEf或ABCDEF错误。因为它不希望仅由字母组成。如果它是AbCdEf1或ABCDEF1,则将是正确的,因为它也包含一个数值。我将在查询中将所有这些条件声明为单独的条件。 1-不为空 2-x_ID字段的长度不能小于3。 还有我在上面写的另外两个条件。

aaazhq 回答:我们如何在oracle中表示重复数字?

该字段的值不能是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

大家都在问