Как проверить почтовый индекс с помощью регулярного выражения? - PullRequest
5 голосов
/ 18 мая 2011

Как проверить почтовый индекс с помощью регулярного выражения?

Это должно быть в следующем порядке: -

[A-z][0-9][A-Z] [0-9][A-Z][0-9]

например.

B5D 2M4 
b5d 2m4 

Я использую Oracle9i.

Спасибо заранее, Шубходжвал Гхош

1 Ответ

4 голосов
/ 18 мая 2011

К сожалению, поскольку вы используете очень старую версию Oracle, вы не можете использовать стандартные функции регулярных выражений, такие как REGEXP_LIKE.Если бы вам пришлось перейти на умеренно свежую версию Oracle, это был бы путь.

В более старых версиях Oracle вам пришлось бы использовать пакет OWA_PATTERN.Обратите внимание: поскольку функция OWA_PATTERN.MATCH возвращает BOOLEAN, вы не можете вызывать ее из SQL, а только из PL / SQL.Конечно, вы можете создать свою собственную функцию-обертку, которая возвращает целое число или строку, чтобы указать, действителен ли почтовый индекс.

SQL> ed
Wrote file afiedt.buf

  1  declare
  2    function is_valid_zip( p_zip_code in varchar2 )
  3      return boolean
  4    is
  5    begin
  6      return owa_pattern.match( p_zip_code,
  7                                '[A-Z]{1}\d{1}[A-Z]{1}\d{1}[A-Z]{1}\d{1}',
  8                                'i' );
  9    end is_valid_zip;
 10  begin
 11    if( is_valid_zip( 'A1B2C3' ) )
 12    then
 13      p.l( '1) Match' );
 14    else
 15      p.l( '1) No match' );
 16    end if;
 17    if( is_valid_zip( '12345' ) )
 18    then
 19      p.l( '2) Match' );
 20    else
 21      p.l( '2) No match' );
 22    end if;
 23* end;
SQL> /
1) Match
2) No match

PL/SQL procedure successfully completed.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...