Задать вопрос
Wolfnsex
@Wolfnsex
Если не хочешь быть первым - не вставай в очередь!

Как привести массив чисел из поля VARCHAR к типу INTEGER в PostgreSQL?

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

Есть вот такой запрос:
SELECT field1::integer FROM table1 WHERE field1 ~ E'^\\d+$' AND field1::integer > 3;

Который позволяет нам выбирать поля типа VARCHAR и приводить их к типу INTEGER для последующего сравнения оных с числовыми значениями.

Теперь возникла необходимость провести такую операцию с полем-массивом VARCHAR[]. То есть, у нас есть поле-массив VARCHAR[], в котором есть некоторый набор значений. Нужно каждое из значений массива выбрать, попробовать его привести к INITEGER типу, если оно не приводится (например, из-за содержания в поле символов отличных от цифр) - просто проигнорировать это значение, со значениями которые приводятся - провести соотв. операцию сравнения, типа:
... WHERE 10 < ANY(array_column).
----------

Коллеги, спасибо большое за помощь! JsQuery вообще отличная штука, жаль оператор LIKE не поддерживает :)
  • Вопрос задан
  • 780 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 2
sim3x
@sim3x
Так говнокодить не нужно - сделай нормализацию или используй json field
||
Предай массив в серверный ЯП
||
Напиши процедуру
Ответ написан
С этой задачей уже наверно как и посоветовали использовать jsonb.

А вот для запросов воспользоваться вот этим https://postgrespro.ru/docs/postgrespro/9.5/jsquery - позволит относительно просто делать сложные условия на внутреннюю структуру json, ещё и индексы буду поддерживаться.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы