Как преобразовать строку в целое число и получить 0 в случае ошибки при преобразовании с PostgreSQL? - PullRequest
108 голосов
/ 18 января 2010

В PostgreSQL у меня есть таблица со столбцом varchar. Предполагается, что данные должны быть целыми числами, и в запросе они нужны мне как целочисленные. Некоторые значения являются пустыми строками. Следующее:

SELECT myfield::integer FROM mytable

урожайность ERROR: invalid input syntax for integer: ""

Как я могу запросить приведение и иметь 0 в случае ошибки во время приведения в postgres?

Ответы [ 11 ]

0 голосов
/ 19 января 2010

Если данные должны быть целыми числами, а эти значения нужны только как целые числа, почему бы вам не пройти целую милю и не преобразовать столбец в целочисленный столбец?

Тогда вы можете сделать этопреобразование недопустимых значений в нули только один раз, в точке системы, в которой данные вставляются в таблицу.

С помощью приведенного выше преобразования вы заставляете Postgres снова и снова преобразовывать эти значения для каждой отдельной строкикаждый запрос к этой таблице - это может серьезно снизить производительность, если вы выполняете много запросов к этому столбцу в этой таблице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...