Как установить тип данных int для столбца со значениями n / a - PullRequest
0 голосов
/ 31 марта 2020

У меня есть таблица в postgres со столбцом 'col' со значениями возраста. Этот столбец также содержит н / д значения. Когда я применяю условие возраста <15, я получаю ошибку ниже: </p>

[Code: 0, SQL State: 22P02]  ERROR: invalid input syntax for integer: "n/a"

Я использую запрос ниже, чтобы обработать значения n / a, но я все еще получаю ту же ошибку:

ALTER TABLE tb 
    ADD COLUMN col CHARACTER VARYING;

UPDATE tb

Set col = 
        CASE
                WHEN age::int <= 15
                THEN 'true'
                ELSE 'false'
        END 
;'

Пожалуйста, обратите внимание, что возраст указан в текстовом формате в моей таблице. У меня есть два вопроса:

  1. Как установить тип данных при создании исходной таблицы (в операторе создания таблицы)?

  2. Как Могу ли я обработать н / д значения в приведенной выше инструкции case?

Спасибо

1 Ответ

1 голос
/ 31 марта 2020

Вы должны действительно исправить свою модель данных и хранить числа в столбцах integer.

Вы можете обойти текущую проблему, преобразовав недействительные «числа» в ноль:

UPDATE tb
  Set col = CASE 
              WHEN nullif(age, 'n/a')::int <= 15 THEN 'true'
              ELSE 'false'
            END;

И, похоже, col должно быть boolean, а не text столбец также.

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