Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Поиск данных через запятую  [new]
Askat
Member

Откуда:
Сообщений: 487
Доброе время суток!. Нужна консультация. Как сделать поиск данных по нескольким значениям в одном поле одновременно? Допустим есть поле ФИО. Пользователь может вводить в это поле ФИО клиента через запятую, количество не известно, короче n-ое. Тут как я понял нужно парсить? Или использовать динамический массив? По возможности можно примерчик. Спс!
2 ноя 18, 09:18    [21722137]     Ответить | Цитировать Сообщить модератору
 Re: Поиск данных через запятую  [new]
-2-
Member

Откуда:
Сообщений: 15330
Askat
ФИО клиента через запятую
select replace('Аскаров,Аскат', ',', ' ') from dual;
2 ноя 18, 09:25    [21722147]     Ответить | Цитировать Сообщить модератору
 Re: Поиск данных через запятую  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7135
Askat,

Студентам, желающим помощи

Как правильно задавать вопросы

Мессир
тестовые данные, например:
with t(fio) as (
select 'Ремарк, Эрих, Мария' from dual union all
select 'Фернандес, Перес, Владимир, Кастулович' from dual union all
select 'Хосуэ, Гонсалес, де Леон' from dual union all
select 'Карам, Абу, Иль, Хатаб' from dual
)
select fio from t;

что хочешь получить
как пытался решить задачу

p.s. Используй ТЭГ SRC для оформления
2 ноя 18, 09:32    [21722154]     Ответить | Цитировать Сообщить модератору
 Re: Поиск данных через запятую  [new]
Askat
Member

Откуда:
Сообщений: 487
-2-
Askat
ФИО клиента через запятую
select replace('Аскаров,Аскат', ',', ' ') from dual;


Вы меня не поняли, пользователь может вводить несколько клиентов в мемо через запятую: Иванов Иван Иваныч, Петров Петр Петрович, Сидров Сидр Сидрович, и т.д. ...
2 ноя 18, 09:39    [21722162]     Ответить | Цитировать Сообщить модератору
 Re: Поиск данных через запятую  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7135
Askat
-2-
пропущено...
select replace('Аскаров,Аскат', ',', ' ') from dual;


Вы меня не поняли, пользователь может вводить несколько клиентов в мемо через запятую: Иванов Иван Иваныч, Петров Петр Петрович, Сидров Сидр Сидрович, и т.д. ...

[youtube=]

21722154
2 ноя 18, 09:52    [21722177]     Ответить | Цитировать Сообщить модератору
 Re: Поиск данных через запятую  [new]
Askat
Member

Откуда:
Сообщений: 487
Vadim Lejnin
Askat
пропущено...


Вы меня не поняли, пользователь может вводить несколько клиентов в мемо через запятую: Иванов Иван Иваныч, Петров Петр Петрович, Сидров Сидр Сидрович, и т.д. ...

[youtube=]

21722154

2 ноя 18, 10:19    [21722207]     Ответить | Цитировать Сообщить модератору
 Re: Поиск данных через запятую  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 2795
Askat,

  1  with Person(ID, FIO) as (
  2  select 100,'Иванов И.И.' from dual union all
  3  select 200,'Иванова А.П.' from dual union all
  4  select 300,'Петров А.П.' from dual union all
  5  select 400,'Петрова А.А.' from dual union all
  6  select 500,'Сидорова А.Ф.' from dual union all
  7  select 600,'Сидорова А.К.' from dual)
  8  ,Pairs(id,IDG, IDM, WEDDING_DATE) as (
  9  select 1,  100,    400,to_date('01-02-98') from dual union all
 10  select 2,  300,    400,to_date('02-10-00') from dual union all
 11  select 3,  500,    600,to_date('02-10-00') from dual )
 12  select * from person
 13* where instr(','||'Петров А.П.,Сидорова А.К.'||',',','||fio||',')>0
SQL> /

        ID FIO
---------- -------------
       300 Петров А.П.
       600 Сидорова А.К.


ps
1) парсіть
2) регулярка
3) like
4) другое
....
stax
2 ноя 18, 10:21    [21722211]     Ответить | Цитировать Сообщить модератору
 Re: Поиск данных через запятую  [new]
Askat
Member

Откуда:
Сообщений: 487
Stax
Askat,

  1  with Person(ID, FIO) as (
  2  select 100,'Иванов И.И.' from dual union all
  3  select 200,'Иванова А.П.' from dual union all
  4  select 300,'Петров А.П.' from dual union all
  5  select 400,'Петрова А.А.' from dual union all
  6  select 500,'Сидорова А.Ф.' from dual union all
  7  select 600,'Сидорова А.К.' from dual)
  8  ,Pairs(id,IDG, IDM, WEDDING_DATE) as (
  9  select 1,  100,    400,to_date('01-02-98') from dual union all
 10  select 2,  300,    400,to_date('02-10-00') from dual union all
 11  select 3,  500,    600,to_date('02-10-00') from dual )
 12  select * from person
 13* where instr(','||'Петров А.П.,Сидорова А.К.'||',',','||fio||',')>0
SQL> /

        ID FIO
---------- -------------
       300 Петров А.П.
       600 Сидорова А.К.



ps
1) парсіть
2) регулярка
3) like
4) другое
....
stax


Спс! Вот я нашел более простой пример 0013331585
2 ноя 18, 11:04    [21722265]     Ответить | Цитировать Сообщить модератору
 Re: Поиск данных через запятую  [new]
Askat
Member

Откуда:
Сообщений: 487
https://m.habr.com/post/269215/
2 ноя 18, 11:04    [21722266]     Ответить | Цитировать Сообщить модератору
 Re: Поиск данных через запятую  [new]
Askat
Member

Откуда:
Сообщений: 487
Askat,

regexp_ классная штука чем использовать union,ы
3 ноя 18, 20:18    [21723393]     Ответить | Цитировать Сообщить модератору
 Re: Поиск данных через запятую  [new]
Elic
Member

Откуда:
Сообщений: 29990
Askat
regexp_ классная штука
RTFM Functions (FAQ)
4 ноя 18, 08:43    [21723514]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить