К сожалению, поскольку вы используете очень старую версию 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.