Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 用字母和数字检查约束_Sql_Oracle_Constraints - Fatal编程技术网

Sql 用字母和数字检查约束

Sql 用字母和数字检查约束,sql,oracle,constraints,Sql,Oracle,Constraints,我试图给varchar27列一个约束,在这里我想在这个顺序中有一个ID字母\字母\数字\字母\字母\字母\字母,所以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”时,我的约束被违反了。有什么想法吗 谢谢大家!

我试图给varchar27列一个约束,在这里我想在这个顺序中有一个ID字母\字母\数字\字母\字母\字母\字母,所以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”时,我的约束被违反了。有什么想法吗

谢谢大家!

您可以使用以下函数

ALTER TABLE vehicule 
ADD CONSTRAINT chk_nr_vehicul 
CHECK ( REGEXP_LIKE (nr_vehicul,'[A-Z]{2}[0-9]{2}[A-Z]{3}') );
其中,大括号中的数字表示构成整个长度7字符串的子字符串的每个部分的长度

更新:如果需要插入带有其他模式(如AB00BB和B000BBB)的值以及当前样本值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}') );
您可以使用以下函数

ALTER TABLE vehicule 
ADD CONSTRAINT chk_nr_vehicul 
CHECK ( REGEXP_LIKE (nr_vehicul,'[A-Z]{2}[0-9]{2}[A-Z]{3}') );
其中,大括号中的数字表示构成整个长度7字符串的子字符串的每个部分的长度

更新:如果需要插入带有其他模式(如AB00BB和B000BBB)的值以及当前样本值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}') );

谢谢你的回复,它很有效。我会问你更多:。任何想法,如果我能以某种方式使这个'AB00BB'或'B000BBB',因为它们在我的例子中都应该是有效的。能做到吗?怎么做?不客气@Rowend。然后,您可以使用OR运算符,例如REGEXP_-LIKE nr_-vehicle、[A-Z]{2}[0-9]{2}[A-Z]{3}或REGEXP_-LIKE nr_-vehicle、[A-Z]{2}[A-Z]{2}[A-Z]{2}或REGEXP u-LIKE nr_-vehicle、[A-Z]{1}[0-9]{3}[A-Z]{3},因为样本值为abbb00b2 2,abb02,00b2 2,b03,b03,bb。顺便说一句,使用诸如“[A-Z]{2}[0-9]{2}[A-Z]{3}{124;[A-Z]{2}[A-Z]{2}[A-Z]{1}[0-9]{3}[A-Z]{3}”这样的管道更为简洁。您也可以使用[A-Z]{1,3},但是您可能还需要检查字符串的总长度。@Abra:谢谢大家!谢谢你的回复,它很有效。我会问你更多:。任何想法,如果我能以某种方式使这个'AB00BB'或'B000BBB',因为它们在我的例子中都应该是有效的。能做到吗?怎么做?不客气@Rowend。然后,您可以使用OR运算符,例如REGEXP_-LIKE nr_-vehicle、[A-Z]{2}[0-9]{2}[A-Z]{3}或REGEXP_-LIKE nr_-vehicle、[A-Z]{2}[A-Z]{2}[A-Z]{2}或REGEXP u-LIKE nr_-vehicle、[A-Z]{1}[0-9]{3}[A-Z]{3},因为样本值为abbb00b2 2,abb02,00b2 2,b03,b03,bb。顺便说一句,使用诸如“[A-Z]{2}[0-9]{2}[A-Z]{3}{124;[A-Z]{2}[A-Z]{2}[A-Z]{1}[0-9]{3}[A-Z]{3}”这样的管道更为简洁。您也可以使用[A-Z]{1,3},但是您可能还需要检查字符串的总长度。@Abra:谢谢大家!