Oracle REGEXP_LIKE约束带有OR操作符



我想创建一个约束,它将检查PostalCode的格式,可以是A1A-1A1或11111。然后输入如下命令

检查(REGEXP_LIKE (PostalCode, ' [a - z] [a - z] [a - z] - [a - z] [a - z] [a - z]"| |"[0 - 9][0 - 9][0 - 9][0 - 9][0 - 9]"))

但是这个命令不起作用。如何修改该命令?

我假设您的格式是AAA-AAA或111-111或11111。如果没有,则更改下面的表达式(它是自解释的)。

          REGEXP_LIKE (PostalCode, '[A-Z0-9][A-Z0-9][A-Z0-9]-[A-Z0-9][A-Z0-9][A-Z0-9]') 
          or REGEXP_LIKE (PostalCode,'[0-9][0-9][0-9][0-9][0-9]')

注意:但是从这里,你也会得到有额外字符的代码,比如AAA-AAAAAA或11111111。要检查这些,您也需要使用length。

          (REGEXP_LIKE (PostalCode, '[A-Z0-9][A-Z0-9][A-Z0-9]-[A-Z0-9][A-Z0-9][A-Z0-9]') 
     and length(PostalCode) =7) 
          or ( REGEXP_LIKE (PostalCode,'[0-9][0-9][0-9][0-9][0-9]')  
     and length(PostalCode) =5) 

最新更新