powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / REGEXP_LIKE и NULL
7 сообщений из 7, страница 1 из 1
REGEXP_LIKE и NULL
    #36912095
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
REGEXP_LIKE(NULL, REGEXP) == UNDEFINED (независимо от значения REGEXP)

Но такая логика меня не устраивает.
Зачастую случается так, что TARGET является пустой строкой и REGEXP составлен так, что под него попадает и пустая строка (Хотя, на самом деле я не знаю значение REGEXP - оно передается параметром).

Что делать?
Есть ли какая-нибудь возможность !по-человечески! узнать попадает ли TERGET под REGEXP или нет?
...
Рейтинг: 0 / 0
REGEXP_LIKE и NULL
    #36912144
comphead
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
REGEXP_LIKE и NULL
    #36912173
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
comphead,

и что там?
вы имеете в виду модификатор 'i' (specifies case-insensitive matching) ?

select count(*) from dual where not regexp_like(null, '1', 'i')

>0


select count(*) from dual where not regexp_like(null, '1?', 'i')

>0
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
REGEXP_LIKE и NULL
    #39965043
TRust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня сейчас ровно та же проблема.
Нашлось ли за это время какое-то решение?
...
Рейтинг: 0 / 0
REGEXP_LIKE и NULL
    #39965061
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
TRust,

либо обходиться с помощью nvl - например, nvl(s,chr(0):
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
with t(s) as (select * from table(sys.odcivarchar2list('a','b',null)))
select 
  ss,
  case 
     when     regexp_like(ss, '1?', 'i') then 'true' 
     when not regexp_like(ss, '1?', 'i') then 'false' 
     else 'undef' 
  end re 
from (
    select nvl(s,chr(0)) ss
    from t
);

SS         RE
---------- -----
a          true
b          true
           true


или если если пользуетесь расширенными регулярными выражениями (POSIX ERE или PCRE, как в большинстве языков типа Perl, Java, и тд) можно воспользоваться моим пакетом XT_REGEXP :
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
with t(s) as (select * from table(sys.odcivarchar2list('a','b',null)))
select s, xt_regexp.get_matches(s, '1?') RE from t;

S          RE
---------- -----------------------------------
a          VARCHAR2_TABLE('', '')
b          VARCHAR2_TABLE('', '')
           VARCHAR2_TABLE('')

3 rows selected.


если только проверить, а не вернуть найденное то можно воспользоваться cardilnaty(xt_regexp.get_matches(...)):
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
with t(s) as (select * from table(sys.odcivarchar2list('a','b',null)))
select s, cardinality(xt_regexp.get_matches(s, '1?')) cnt from t;

S                 CNT
---------- ----------
a                   2
b                   2
                    1

3 rows selected.
...
Рейтинг: 0 / 0
REGEXP_LIKE и NULL
    #39965063
TRust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtender, в случае шаблона ^$

regexp_like('', '^$') вернёт null и мы ничего не выясним. А надо бы true.
В общем случае, когда заранее шаблон регулярного выражения неизвестен, это не работает.
...
Рейтинг: 0 / 0
REGEXP_LIKE и NULL
    #39965069
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
TRust,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
with t(s) as (select * from table(sys.odcivarchar2list('a','b',null)))
select s, cardinality(xt_regexp.get_matches(s, '^$')) cnt from t;

S                 CNT
---------- ----------
a                   0
b                   0
                    1

3 rows selected.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / REGEXP_LIKE и NULL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]