Задать вопрос
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 не поддерживает :)
  • Вопрос задан
  • 811 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • QA Studio
    Инженер по тестированию: с нуля до Junior+
    4 месяца
    Далее
  • Merion Academy
    Основы реляционных баз данных SQL
    1 месяц
    Далее
  • Учебный центр IBS
    ARC-PRG-001 Архитектор ПО. Путь к мастерству в проектировании систем
    2 недели
    Далее
Решения вопроса 2
sim3x
@sim3x
Так говнокодить не нужно - сделай нормализацию или используй json field
||
Предай массив в серверный ЯП
||
Напиши процедуру
Ответ написан
С этой задачей уже наверно как и посоветовали использовать jsonb.

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

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

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