Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Полнотекстовый поиск??? / 6 сообщений из 6, страница 1 из 1
27.05.2019, 11:54
    #39818680
jus
jus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск???
Всем привет, такой вопрос: Как реализовать поиск по строке?
Например входит строка: Петр Ива Серг. Из этой строки он мне должен найти строку в таблице содержанием: Петров Иван Сергеевич.
Если есть варианты - подскажите.
Спасибо!
...
Рейтинг: 0 / 0
27.05.2019, 11:57
    #39818682
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск???
jusНапример входит строка: Петр Ива Серг. Из этой строки он мне должен найти строку в таблице содержанием: Петров Иван Сергеевич.С таким примером и like справится.
http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
27.05.2019, 12:00
    #39818684
jus
jus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск???
Elic, например?
...
Рейтинг: 0 / 0
27.05.2019, 12:01
    #39818685
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск???
jusElic, например?

[youtube=
YouTube Video
...
Рейтинг: 0 / 0
27.05.2019, 15:11
    #39818835
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск???
jusElic, например?
Код: plsql
1.
2.
...
WHERE my_field LIKE '%Петр%Ива%Серг%'
...
Рейтинг: 0 / 0
31.05.2019, 13:04
    #39820717
jus
jus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск???
Вспомнил, что писал топик, с задачей разобрался быстро.
Написал дополнение к существующей функции(все было под postgresql):

Обрезаю точки/запятые/лишние пробелы
l_per:=trim(both ' ' from lower((replace(replace(p_per,'.',''),',','')::text)));

Двойные пробелы и разбиваем
while position(' ' in l_per)>0 loop
select replace(l_per,' ',' ')::text into l_per;
end loop;

Делаем табличку со словами в поиске и ходим по ним и складываем в строку в которой приклееваем like cо словом из таблицы.
f or l_per in select regexp_split_to_table(l_per,' ')
loop
l_sql_address:=l_sql_address||' and lower(address::text) like '''||'%'||l_per||'%'||''' ';
end loop;
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Полнотекстовый поиск??? / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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