SQL 在 AAA 和 ZZZ 之间

SQL Between AAA and ZZZ

我无法获取介于 AAA 和 ZZZ 之间的代码,这是我尝试过的:

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

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

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

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

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

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

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

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