Как проверить название города с помощью RegExp в PL / SQL - PullRequest
0 голосов
/ 17 декабря 2011

Я использую Oracle 11g в качестве базы данных и PL / SQL в качестве языка SQL для проверки определенных столбцов внутри таблицы.

Требование (я):

  1. Подтвердите «Название города», чтобы оно содержало только буквы и цифры.

  2. Может содержать пробел для таких городов, как Сан-Хосе или Сан-Франциско.

    function ValidateCity(city in varchar2) return varchar2 is
        valid varchar2(50) := 'valid';
    begin
        if not REGEXP_LIKE (city, '^[A-Z\s]*$') then
           valid := (case when valid = 'valid' then '' else valid end) 
                     || 'Does not match pattern ^[A-Z\s]*$ ';
        else
           valid := 'Required ';
        end if;
       return valid;
    end;
    

Это работает, когда я передаю название одного города, например "Тусон", но не при наличии пробела, например Сан-Франциско или Лос-Анджелес.

Любые намеки / предложения / советы приветствуются!

Спасибо, что нашли время для прочтения этого ...

Ответы [ 2 ]

1 голос
/ 17 декабря 2011

normal* (special normal*)* снова ...

^[[:alpha:]]+([-[:space:]][[:alpha:]]+)*$

Регулярные выражения Oracle не поддерживают \s, см. здесь . [:alpha:] и [:space:] являются классами символов POSIX и всегда должны быть в классах символов. [-[:space:]] означает «тире или пробел». Вместо этого вы можете заменить [:space:] одним пробелом.

[отредактировано для упрощения: special здесь действительно только тире или пробел]

0 голосов
/ 23 декабря 2011

Для справки, Oracle поддерживает регулярные выражения в стиле Perl: Расширения под влиянием Perl

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