int:
получаю ошибку: ERROR: invalid input syntax for integer: ""
делаю: ALTER TABLE the_table ALTER COLUMN col_name TYPE integer USING (trim(col_name)::integer);
В колонке пусто (пкстая строка). Как победить?
Select ''::integer
Ну это значит, то так просто нельзя ''::integer сделать. Я ж написал, что нужно проверить, что будет. Нужно написать alter table T alter column col_name type integer using ( case when col_name = '' then 0 else col_name::integer end ) по всей видимости.
Using nullif(trim(col_name) , '')::bigint
спасибо, то что нужно. Но хочется разобраться. Не понимаю моменты - 1. нельзя '' привести к int в принципе? 2. "Тогда нужно проверить, что вернёт select ''::integer" - не понимаю, что мы проверяли? - произойдет ли ошибка?
Да, мы проверяли, произойдёт ли ошибка. Я не помню все эти моменты. Вам, возможно, нужно было пустую строку привести к null. В моём примере она приводится к 0.
если not null это не подходит, верно?
Обсуждают сегодня