Страницы

Поиск по вопросам

среда, 10 июля 2019 г.

LIKE подобный запрос, с использованием xpath в postrgesql

Добрый вечер! У меня имеется простая база данных, в которой хранится xml - данные, в данном случае автор книги и её текст. Вопрос как осуществить поиск типа LIKE, чтобы не писать полное содержание книги или полностью автора. На данный момент я делаю такой запрос:
SELECT * from storage where (xpath('//book/author/text()', documentcontent))[1]::text = 'Толстой Лев Николаевич'::text;


Ответ

Вообщем получилось у меня найти ответ, вышло их целых два.
Первый вариант вытаскивает только ОДНО значение вместе с тегами из XML документа хранящегося в таблице:
SELECT unnest(xpath('//ЗДЕСЬ УКАЗАТЬ УЗЕЛ/*[contains(text(),"ТУТ НАПИСАТЬ ИЛИ УКАЗАТЬ ЧАСТЬ ТЕКСТА, КОТОРЫЙ ХРАНИТСЯ В XML")]', ТУТ УКАЗАТЬ ИМЯ ПОЛЯ::xml))::text AS XMLDATA FROM ТУТ УКАЗАТЬ ИМЯ ТАБЛИЦЫ;
Второй вариант вытаскивает ВСЕ значение вместе с тегами из XML документа хранящиеся в таблице:
SELECT * from ТУТ УКАЗАТЬ ИМЯ ТАБЛИЦЫ where (xpath('//ЗДЕСЬ УКАЗАТЬ УЗЕЛ', ТУТ УКАЗАТЬ ИМЯ ПОЛЯ))[1]::text ILIKE '%ТУТ УКАЗАТЬ ФРАЗУ ЧАСТЬЮ ИЛИ ЦЕЛИКОМ'::text;
Надеюсь вам поможет.

Комментариев нет:

Отправить комментарий