SQL和AAA之间的SQL

时间:2017-11-17 18:31:06

标签: sql oracle between

我无法获得AAA和ZZZ之间的代码,这就是我的尝试:

ALTER TABLE AIRPORT
ADD CONSTRAINT CORRECTCODE
CHECK (Code BETWEEN 'AAA' AND 'ZZZ' AND LENGTH(Code) = 3) ENABLE VALIDATE;

它接受我想要的值,但它也接受包含AB6等数字的值。我做错了什么?

2 个答案:

答案 0 :(得分:2)

您可以使用regexp_like。这将检查3个字符是否为大写。

CHECK(regexp_like(Code,'^[A-Z]{3}$'))

如果应支持大写和小写混合字符,请使用不区分大小写的标记i作为第三个参数。

CHECK(regexp_like(Code,'^[A-Z]{3}$','i'))

答案 1 :(得分:-1)

听起来你只是在寻找任何三个字母的大写代码。如果这是真的,最简单的方法就是使用正则表达式,比如;

CHECK (REGEXP_LIKE (Code, '[A-Z]{3}'))