Заменить NULL в моей таблице нав PostgreSQL - PullRequest
0 голосов
/ 23 мая 2018

При поиске путей замены значений NULL в моей таблице на 0 при переполнении стека выясняется, что многие потоки, которые я обнаружил, указывают на использование функции COALESCE.Например, postgresql возвращает 0, если возвращаемое значение равно нулю

Я понимаю, что функция COALESCE "заменяет" нулевые значения для вашего конкретного запроса;однако сама таблица остается нетронутой.То есть, если вы снова запросите таблицу в отдельном запросе без COALESCE, все равно будут существовать нулевые значения.

Мой вопрос заключается в том, есть ли способ навсегда заменить значения NULL в моей таблице назаданное значение (например, 0), поэтому мне не нужно COALESCE в каждом запросе?И как продолжение моего вопроса, считается ли плохой практикой изменение исходной таблицы вместо выполнения манипуляций в запросах?

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Я понимаю, что вы получили ответ, но вы также можете использовать в дальнейшем запросе nvl функцию.Вы можете заменить во время выполнения значения NULL на 0, чтобы убедиться, что ваш запрос работает должным образом.

SELECT 
        id
       ,nvl(col1, 0)
FROM
       ...

Он не обновляется в таблице, но вы уверены, что все значения NULL отображаются как 0, какты хочешь.Может быть, вы забыли обновить.

0 голосов
/ 23 мая 2018

Вы можете просто сделать ОБНОВЛЕНИЕ:

UPDATE table SET col1 = 0 WHERE col1 IS NULL;

Это должно эффективно обновить все соответствующие записи в вашей таблице

...