我想创建一个约束,它将检查PostalCode的格式,可以是A1A-1A1或11111.我有这样的命令
检查(REGEXP_LIKE(PostalCode,'[AZ] [AZ] [AZ] - [AZ] [AZ] [AZ]'||'[0-9] [0-9] [0-9] [0 -9] [0-9]'))
但是这个命令不起作用。我该如何修改该命令?
答案 0 :(得分:0)
我假设您的格式类似于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.要检查这些代码,您也需要使用长度。
(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)