用字母和数字检查约束

Check Constraint with letters and digits

我正在尝试对一个列 (varchar2(7)) 进行约束,我想在其中按此顺序拥有一个 ID Letter_Letter_Digit_Digit_Letter_Letter_Letter,因此 2 个字母、2 个数字、3 个字母。我试过类似这样的方法和一些说明:

ALTER TABLE vehicule 
ADD CONSTRAINT CHK_nr_vehicul 
CHECK (nr_vehicul LIKE '[A-Z][A-Z][0-9][0-9][A-Z][A-Z][A-Z]');

当我尝试给出这样的东西时 'AB00BBB' 我的约束被违反了。有什么想法吗?

谢谢!

您可以使用REGEP_LIKE()函数,例如

ALTER TABLE vehicule 
ADD CONSTRAINT chk_nr_vehicul 
CHECK ( REGEXP_LIKE (nr_vehicul,'[A-Z]{2}[0-9]{2}[A-Z]{3}') );

其中大括号中的数字表示构成整个长度为 7 的字符串的每个子字符串的长度。

更新: 如果您需要插入具有其他一些模式的值,例如 AB00BBB000BBB 以及当前样本值的模式( AB00BBB),然后使用管道运算符,例如

ALTER TABLE vehicule 
ADD CONSTRAINT chk_nr_vehicul 
CHECK ( REGEXP_LIKE (nr_vehicul,'[A-Z]{2}[0-9]{2}[A-Z]{3}|[A-Z]{2}[0-9]{2}[A-Z]{2}|[A-Z]{1}[0-9]{3}[A-Z]{3}') );