Обновить столбцы с нулевыми значениями
Привет, я хочу обновить таблицу следующим образом
update userloginstats set logouttime= sysdate where logouttime= null;
Но он не обновлял столбцы с нулевыми значениями.
что не так
Ответы
Ответ 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 использует более пуристский подход, правильно или неправильно.