Привет Я хочу, чтобы обновить таблицу, как следующиеUpdate столбцы с нулевыми значениями
update userloginstats set logouttime= sysdate where logouttime= null;
Но это не обновлялись столбцы с нулевыми значениями. что не так
Привет Я хочу, чтобы обновить таблицу, как следующиеUpdate столбцы с нулевыми значениями
update userloginstats set logouttime= sysdate where logouttime= null;
Но это не обновлялись столбцы с нулевыми значениями. что не так
Изменить его
...where logouttime is null;
^^^^^^^
NULL
это специальное значение, и мы не можем использовать обычный =
оператор с ним.
От Oracle documentation for NULL:
Для проверки нулей, используйте только условия сравнения IS NULL и IS NOT NULL. Если вы используете какое-либо другое условие с нулями, а результат зависит от значения null, то результат НЕИЗВЕСТНО, потому что null представляет собой отсутствие данных, нуль не может быть равным или не равным ни одному значению или другому нулю.
logouttime is null
, а не = null
. null
никогда не сравнится ни с чем, даже с самим собой. Таким образом, оператор is
.
Вы должны использовать is null
не = null
update userloginstats set logouttime= sysdate where logouttime is null;
Вы не можете сравнить NULLs с =.
Используйте это:
update userloginstats set logouttime= sysdate where logouttime is null;
Для нулей вы должны использовать "IS NULL" или "IS NOT NULL", а не оператор =. Это потому, что null технически не является ни истинным, ни ложным, скорее это отсутствие ценности в любом случае.
Большинство языков программирования обычно связывают нуль с ложью для удобства (и тем самым позволяют использовать оператор =), но SQL использует более пуристский подход, правильно или неправильно.
<сопротивление соблазну добавить еще один ответ, который говорит точно то же самое ...> –