Sql Oracle:检查varchar2中字母和数字字符的约束

Sql Oracle:检查varchar2中字母和数字字符的约束,sql,oracle,oracle11g,character,check-constraints,Sql,Oracle,Oracle11g,Character,Check Constraints,因此,我想检查varchar2的格式是否为4个字母字符,然后是3个数字字符,例如AABB123或LMNO987 到目前为止,我已经尝试: CONSTRAINT Code_Check check (REGEXP_LIKE(Code,'[^A-Z][^A-Z][^A-Z][^A-Z][0-9][0-9][0-9]')) CONSTRAINT Check_Code check (Code LIKE '[^A-Z][^A-Z][^A-Z][^A-Z][0-9][0-9][0-9]' CONSTRAI

因此,我想检查varchar2的格式是否为4个字母字符,然后是3个数字字符,例如AABB123或LMNO987

到目前为止,我已经尝试:

CONSTRAINT Code_Check check (REGEXP_LIKE(Code,'[^A-Z][^A-Z][^A-Z][^A-Z][0-9][0-9][0-9]'))

CONSTRAINT Check_Code check (Code LIKE '[^A-Z][^A-Z][^A-Z][^A-Z][0-9][0-9][0-9]'

CONSTRAINT Check_Code check (Code LIKE '[A-Z][A-Z][A-Z][A-Z][0-9][0-9][0-9]')

CONSTRAINT Check_Code check (Code regexp_LIKE '[A-Z][A-Z][A-Z][A-Z][0-9][0-9][0-9]')

CONSTRAINT Check_Code check (Code LIKE '[^A-Z]{4}[0-9]{3}')
但只需获得错误:

insert into Table1 (Code) values ('HELP555')
Error report:
SQL Error: ORA-02290: check constraint (BOB.TABLE1_CHECK_CODE) violated
02290. 00000 - "check constraint (%s.%s) violated"
*Cause: The values being inserted do not satisfy the named check
*Action: do not insert values that violate the constraint.

正则表达式是不正确的,而且您使用的方法非常繁琐

相反,您可以选择使用。在您的具体情况下,情况如下:

[[:alpha:]]{4}[[:digit:]]{3}
因此,约束检查是

CONSTRAINT Code_Check check (REGEXP_LIKE(Paper_Code,'[[:alpha:]]{4}[[:digit:]]{3}')
这将检查是否有4个字母字符,后跟3个数字

有关更多信息的示例,请访问