Регулярное выражение PL / SQL Oracle не работает при возникновении нуля - PullRequest
2 голосов
/ 20 августа 2010

У меня проблема с сопоставлением регулярного выражения в Oracle PL / SQL.Чтобы быть более конкретным, проблема в том, что регулярное выражение не хочет совпадать ни с одним вхождением.Например, у меня есть что-то вроде:

select * from dual where regexp_like('', '[[:alpha:]]*');

, и это не работает.Но если я поставлю пробел в этом утверждении:

select * from dual where regexp_like(' ', '[[:alpha:]]*');

, это сработает.

Я хочу запустить первый пример, чтобы человеку не нужно было ставить для него «пробел»работать.Любая помощь приветствуется, и спасибо за ваше время.

T

Ответы [ 2 ]

2 голосов
/ 20 августа 2010

Для лучше или хуже , пустые строки в Oracle обрабатываются как NULL:

SQL> select * from dual where '' like '%';

DUMMY
-----

Примите это во внимание при обращении к Oracle:

SQL> SELECT *
  2    FROM dual
  3   WHERE regexp_like('', '[[:alpha:]]*')
  4      OR '' IS NULL;

DUMMY
-----
X
0 голосов
/ 20 августа 2010

Oracle по-прежнему обрабатывает пустые строки как NULL?И если да, то regexp_like с NULL входной исходной строкой возвращает UNKNOWN?И то, и другое было бы полуразумным и причиной, по которой ваш тест не работает так, как вы ожидали.

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