powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / REGEXP_INSTR - наличие числа в списке с разделителем
25 сообщений из 25, страница 1 из 1
REGEXP_INSTR - наличие числа в списке с разделителем
    #40053184
ARRay001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!

Никак не пойму, как определить наличие числа в списке разделителем.
Надо что-то вроде этого:

Код: plsql
1.
select regexp_instr('212221,252,233,222','[^[:digit:]](222)[^[:digit:]]',1) from dual;



Правильный ответ 16, где ^[:digit:] - это я попытался сказать, что по краям шаблонного числа любой символ, кроме цифры. Что не верно. Как верно - не пойму.
Вообще требуется в where проверять наличие значения поля в списке значений, разделенных запятой.
Т.е. перед числом может не быть ничего (начало строки), может быть запятая. После числа может быть запятая или ничего (конец строки).
Прошу помощи в написании такого шаблона.
...
Рейтинг: 0 / 0
REGEXP_INSTR - наличие числа в списке с разделителем
    #40053185
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ARRay001
Правильный ответ 16
А известные уважаемые люди считают, что 42.

Выучи оператор "или" и якоря начала и конца строки.
...
Рейтинг: 0 / 0
REGEXP_INSTR - наличие числа в списке с разделителем
    #40053188
ARRay001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,
Как это 42? В исходной строке столько символов-то нет.
Сами операторы по отдельности я знаю, а вот как правильно применить...
...
Рейтинг: 0 / 0
REGEXP_INSTR - наличие числа в списке с разделителем
    #40053192
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ARRay001
Как это 42?
UTFG :)
...
Рейтинг: 0 / 0
REGEXP_INSTR - наличие числа в списке с разделителем
    #40053195
ARRay001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,
Гуглю уже - никак не гуглится) опять загадки...
ладно, может сам разгадаю, правда зачем сюда писал тогда?
...
Рейтинг: 0 / 0
REGEXP_INSTR - наличие числа в списке с разделителем
    #40053198
новый2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.exlab.net/files/tools/sheets/regexp/regexp.png

Код: sql
1.
select regexp_instr('212221,252,233,222','(\D|^)(222)(\D|$)',1)+1 from dual;
...
Рейтинг: 0 / 0
REGEXP_INSTR - наличие числа в списке с разделителем
    #40053199
ARRay001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
новый2,
Спасибо - разберусь с символами!
...
Рейтинг: 0 / 0
REGEXP_INSTR - наличие числа в списке с разделителем
    #40053203
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вредная ссылка. Почему никто не хочет читать оригинальную документацию по используемому продукту?
...
Рейтинг: 0 / 0
REGEXP_INSTR - наличие числа в списке с разделителем
    #40053206
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ARRay001
правда зачем сюда писал тогда?
Я у тебя тоже спрошу, а ты зачем сюда писал? Думаешь твой вопрос уникальный? - Нет. Он 100500 раз уже разжёван на этом форуме. Что тебе помешало воспользоваться поиском? - Лень? Наглость? Отсутствие способности самостоятельно находить решения?..
...
Рейтинг: 0 / 0
REGEXP_INSTR - наличие числа в списке с разделителем
    #40053208
ARRay001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,
Я искал и в этом форуме. ссылка одна на не совсем то. Может не так ищу...
...
Рейтинг: 0 / 0
REGEXP_INSTR - наличие числа в списке с разделителем
    #40053210
ARRay001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
новый2,
Вариант не срабатывает во всех разных случаях. Например:

Код: plsql
1.
select regexp_instr('111,2111','(\D|^)(222)(\D|$)',1)+1 from dual;



даёт результат 1. Хотя должен 0 (т.е. не найдена подстрока '222').
...
Рейтинг: 0 / 0
REGEXP_INSTR - наличие числа в списке с разделителем
    #40053214
ARRay001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,
Поискал по другой фразе - нашел больше ссылок. Ладно покопаюсь, раз так ставишь вопрос.
Но может кто ещё более добрый найдётся и не будет отсылать в поиск.
...
Рейтинг: 0 / 0
REGEXP_INSTR - наличие числа в списке с разделителем
    #40053218
новый2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ARRay001,

1 потому, что +1 написано, так как находит не 222, а символ перед ним

как вариант
Код: sql
1.
2.
3.
4.
5.
select case regexp_instr('222,111,2111','(\D|^)(222)(\D|$)',1) when 0 then 0
when 1 then 1 else regexp_instr('222,111,2111','(\D|^)(222)(\D|$)',1)+1 end from dual;

select case regexp_instr('111,2111','(\D|^)(222)(\D|$)',1) when 0 then 0
when 1 then 1 else regexp_instr('111,2111','(\D|^)(222)(\D|$)',1)+1 end from dual;
...
Рейтинг: 0 / 0
REGEXP_INSTR - наличие числа в списке с разделителем
    #40053219
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ARRay001
Код: plsql
1.
+1 from dual;

даёт результат 1. Хотя должен 0 (т.е. не найдена подстрока '222').
Попробуй включить мозг.
...
Рейтинг: 0 / 0
REGEXP_INSTR - наличие числа в списке с разделителем
    #40053220
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
новый2
1 потому, что +1 написано, так как находит не 222, а символ перед ним
Что за бред.
...
Рейтинг: 0 / 0
REGEXP_INSTR - наличие числа в списке с разделителем
    #40053221
новый2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

ну , пардон, с формулировками беда
маска (\D|^)(222)(\D|$) дает номер позиции не цифры (\D) перед строкой 222, т.е. в исходном примере ответ 15, а не 16, поэтому +1
...
Рейтинг: 0 / 0
REGEXP_INSTR - наличие числа в списке с разделителем
    #40053222
ARRay001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,
я понял, что из-за этого. И думаю, что там как-то проще должно. Ищем просто наличие конкретной цифры в списке, только надо отсечь то, что справа и слева(не цифры, а начало строки, конец строки или запятую).
...
Рейтинг: 0 / 0
REGEXP_INSTR - наличие числа в списке с разделителем
    #40053224
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ARRay001
И думаю, что там как-то проще должно.
Однозначно. Погугли сагу о XYZ.

Бизнес-задача имеет решение, но не всегда такое, как кажется недалёким. А бизнес задачу ты не озвучил.
...
Рейтинг: 0 / 0
REGEXP_INSTR - наличие числа в списке с разделителем
    #40053225
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ARRay001
Ищем просто наличие конкретной цифры в списке,
Ты в школе учился? Цифра - это один символ.
...
Рейтинг: 0 / 0
REGEXP_INSTR - наличие числа в списке с разделителем
    #40053226
ARRay001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,
описался "числа". Насчёт бизнес-задачи не понял. По-моему конкретней, чем я описал описать невозможно. Погуглю сагу - рано или поздно нагуглю...
...
Рейтинг: 0 / 0
REGEXP_INSTR - наличие числа в списке с разделителем
    #40053227
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ARRay001
как определить наличие числа в списке разделителем
Для тех, кто не дружит с нормальными формами, есть тридцатилетиями заезжанный способ:
Код: plsql
1.
instr(:sep || :list || :sep, :sep || :value || :sep) > 0 
...
Рейтинг: 0 / 0
REGEXP_INSTR - наличие числа в списке с разделителем
    #40053229
ARRay001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,
интересно! Надо осознать как работает instr с одним параметром. Не встречал что-то до сих пор...
...
Рейтинг: 0 / 0
REGEXP_INSTR - наличие числа в списке с разделителем
    #40053231
новый2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
select regexp_instr('212221,252,233,222','(\D|^)(222)(\D|$)',1,1,0,'c',2)
from dual;


если проще, то использовать все параметры функции REGEXP_INSTR (нужен параметр sub_expression, который указывает на нужное второе выражение
...
Рейтинг: 0 / 0
REGEXP_INSTR - наличие числа в списке с разделителем
    #40053244
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ARRay001
Надо осознать как работает instr с одним параметром.
Не получится, чудак. У instr-а минимум два параметра.
...
Рейтинг: 0 / 0
REGEXP_INSTR - наличие числа в списке с разделителем
    #40053250
ARRay001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,
да, сорян, здесь я был невнимателен) всё прозрачно!
Была подобная мысль, но что-то не успела материализоваться...
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / REGEXP_INSTR - наличие числа в списке с разделителем
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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