Как преобразовать из текста в int, если столбец содержит значения как int, так и NULL в PostgreSQL - PullRequest
1 голос
/ 07 января 2011

Как в заголовке.У меня есть один столбец, который имеет некоторые текстовые значения.Например, столбец data1 имеет значения ('31', 32 ',' ', NULL).Теперь я хочу обновить другой столбец, скажем data2 (тип INT), с данными из data1, поэтому я пытаюсь сделать что-то подобное:

UPDATE table SET data2=CAST(data1 AS INT).

Проблема в том, что PostgreSQL не может приводить NULL или пустые значения к INT.

1 Ответ

5 голосов
/ 07 января 2011

На самом деле, вы можете привести NULL к int, вы просто не можете привести пустую строку к int. Предполагая, что вы хотите NULL в новом столбце, если data1 содержит пустую строку или NULL, вы можете сделать что-то вроде этого:

UPDATE table SET data2 = cast(nullif(data1, '') AS int);

Если вам нужна другая логика, вы можете использовать, например (пустая строка преобразуется в -1):

UPDATE table SET data2 = CASE WHEN data1 = '' THEN -1 ELSE cast(data1 AS int) END;
...