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

[PostgreSQL] Как привести строки в INT и другие типы данных?

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

Есть база PostgreSQL, в одной из таблиц хранятся смешанные значения (т.е. могут быть как текст, так и цифры, так и что угодно ещё), формат поля - VARCHAR.

В некоторые моменты времени, необходимо выбрать все строки, в которых поле N, например, больше 3, например так: SELECT * FROM table1 WHERE field1 > 3;
Но, тут возникает проблема, т.к. field1 не всегда числовое. Я знаю, что в PostgreSQL есть приведения типов, и запрос должен был бы выглядеть примерно так:SELECT * FROM table1 WHERE field1::INTEGER > 3;
Но, как только приведение доходит до нечислового значения - вылетает с ошибкой, "ошибка синтаксиса".

Подскажите пожалуйста, как правильно составить запрос таким образом, что бы всё что можно было привести к нужному типу - автоматически приводилось бы, а всё что нельзя - просто пропускалось бы, без сравнения/приведения?
  • Вопрос задан
  • 12406 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
Выбрать только то, что является числом.
SELECT field1::integer FROM table1 WHERE field1 ~ E'^\\d+$' AND field1::integer > 3;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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