Замените NULL в моей таблице на In PostgreSQL



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



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



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

890   2  

2 ответов:

Вы можете просто сделать обновление:

UPDATE table SET col1 = 0 WHERE col1 IS NULL;

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

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

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

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

Comments

    Ничего не найдено.