Подтвердить что ты не робот

Обновить столбцы с нулевыми значениями

Привет, я хочу обновить таблицу следующим образом

update userloginstats set logouttime= sysdate where logouttime= null;

Но он не обновлял столбцы с нулевыми значениями. что не так

4b9b3361

Ответ 1

Измените его на

...where logouttime is null;
                    ^^^^^^^

NULL является специальным значением, и мы не можем использовать с ним обычный оператор =.

Из документации Oracle для NULL:

Для проверки нулей используйте только условия сравнения IS NULL и NOT NOT. Если вы используете какое-либо другое условие с нулями, а результат зависит от значения null, то результат НЕИЗВЕСТНО, потому что null представляет отсутствие данных, значение null не может быть равным или не равным никакому значению или к другому null

Ответ 2

Вы не можете сравнивать NULL с =.

Используйте это:

update userloginstats set logouttime= sysdate where logouttime is null;

Ответ 3

logouttime is null, а не = null. null никогда не может сравниться ни с чем, даже с самим собой. Таким образом, оператор is.

Ответ 4

Вам нужно использовать is null not = null

update userloginstats set logouttime= sysdate where logouttime is null;

Ответ 5

Для нулей вы должны использовать " IS NULL" или " НЕ НЕЛЬЗЯ", а не оператор =. Это потому, что null технически не является ни истинным, ни ложным, а скорее отсутствием значения в любом случае.

Большинство языков программирования обычно ассоциируют null с ложным для удобства (и тем самым позволяют использовать оператор =), но SQL использует более пуристский подход, правильно или неправильно.