Ограничение SQL для Канады Почтовый индекс + Почтовый индекс США? - PullRequest
0 голосов
/ 21 сентября 2018

Я создал ограничение для канадского почтового индекса, и оно работает нормально, однако, когда я ввожу почтовый индекс США, например 1234567, запись все равно добавляется. Я ищу способ изменить свое ограничение, чтобыон принимает только 5 номера ?

Postal_Code varchar2(7) Constraint NN_Investor_PostalCode Null,
Constraint CK_Investor_PostalCode check 
(REGEXP_LIKE (Postal_Code, '[A-Z][0-9][A-Z] [0-9][A-Z][0-9]') 
    or REGEXP_LIKE (Postal_Code, '[1-9][0-9][0-9][0-9][0-9]')), 

1 Ответ

0 голосов
/ 21 сентября 2018

Вы можете попробовать это

REGEXP_LIKE (Postal_Code, '[A-Z][0-9][A-Z] [0-9][A-Z][0-9]') 
        or ( REGEXP_LIKE (Postal_Code, '^[1-9][0-9]{4}') and length(Postal_Code)=5

в качестве ограничения check .

Пример демонстрации:

with t(Postal_Code) as
(
 select '12345'   from dual union all
 select '32045'   from dual union all 
 select '1234567' from dual union all
 select '123456'  from dual union all
 select  '01234'  from dual 
)
select * 
  from t
 where REGEXP_LIKE (Postal_Code, '[A-Z][0-9][A-Z] [0-9][A-Z][0-9]') 
    or ( REGEXP_LIKE (Postal_Code, '^[1-9][0-9]{4}') and length(Postal_Code)=5 );

POSTAL_CODE
----------- 
  12345
  32045
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...