Форум программистов, компьютерный форум CyberForum.ru

PostgreSQL

Войти
Регистрация
Восстановить пароль
 
wolfalone
В экстазе
142 / 126 / 26
Регистрация: 05.08.2012
Сообщений: 653
Записей в блоге: 3
#1

Приведение типов массивов PostgreSQL и поиск по ним - PostgreSQL

27.11.2016, 19:45. Просмотров 216. Ответов 2
Метки нет (Все метки)

Доброго времени суток уважаемые!

Есть поле в таблице типа VARCHAR.

Есть запрос вида:
SQL
1
SELECT * FROM table1 WHERE column1 ~ E'^\\d+$' AND column1::INTEGER > 10
Который, как Вы догадались, позволяет делать приведение и сравнение VARCHAR-полей как целых.

Стоит аналогичная задача, но, поле на этот раз - массив VARCHAR[]. Нужно попробовать привести каждое значение массива к типу INTEGER и проверить, по какому-то условию (например, больше ли он 10). Если значение не приводится к типу INTEGER (например, содержит символы отличные от цифр) - просто проигнорировать это конкретное значение.

Подскажите пожалуйста, как это сделать?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2016, 19:45     Приведение типов массивов PostgreSQL и поиск по ним
Посмотрите здесь:

PostgreSQL PostgreSQL
PostgreSQL доступ к postgresql
PostgreSQL Установка PostgreSQL
PostgreSQL Логи в Postgresql
мониторинг postgresql PostgreSQL
PostgreSQL PostgreSQL + MCBC
Не могу разобраться с PostgreSQL. Поиск по всем таблицам и всем полям? PostgreSQL
Функции в PostgreSQL PostgreSQL
PostgreSQL функции PostgreSQL
Auto_increment postgresql PostgreSQL
PostgreSQL Php+postgresql поиск по базе данных
PostgreSQL PostgreSQL and Denwer

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grgdvo
518 / 459 / 126
Регистрация: 02.09.2012
Сообщений: 1,344
27.11.2016, 23:28     Приведение типов массивов PostgreSQL и поиск по ним #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от wolfalone Посмотреть сообщение
Подскажите пожалуйста, как это сделать?
1. Написать самому функцию проверки на sql/plpgsql. Правда, если у вас миллионы записей, не факт, что будет быстро работать.
2. Можно пробовать разложить массив в записи. функция unnest, далее как у Вас проверять.

SQL
1
2
3
4
SELECT tt.*
FROM
(SELECT t.*, unnest(t."ArrayData") AS "ArrayItem" FROM table1 AS t) AS tt
WHERE "ArrayItem" ~ ....
wolfalone
В экстазе
142 / 126 / 26
Регистрация: 05.08.2012
Сообщений: 653
Записей в блоге: 3
28.11.2016, 18:52  [ТС]     Приведение типов массивов PostgreSQL и поиск по ним #3
Благодарю за помощь, запрос ещё не проверял (пока нет возможности), но общую логику я понял. В итоге всё-таки решил не извращаться и вынести данные в отдельную таблицу, т.к. с массивом "лучше" не получается.
Yandex
Объявления
28.11.2016, 18:52     Приведение типов массивов PostgreSQL и поиск по ним
Ответ Создать тему
Опции темы

Текущее время: 15:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru