Mettre à jour les colonnes avec des valeurs nulles
J'ai essayé de mettre à jour une table comme suit:
update userloginstats set logouttime = sysdate where logouttime = null;
Il n'a pas mis à jour les colonnes avec des valeurs null. Quel est le problème?
5 réponses
Changez-le en
...where logouttime is null;
^^^^^^^
NULL
est une valeur spéciale et nous ne pouvons pas utiliser l'habituel =
opérateur avec elle.
À partir de la documentation D'Oracle pour NULL :
Pour tester les valeurs NULL, utilisez uniquement les conditions de comparaison sont NULL et non NULL. Si vous utilisez une autre condition avec NULL et que le résultat dépend de la valeur de null, le résultat est inconnu car null représente un manque de données, Un null ne peut pas {[14] } être égal ou inégal à tout valeur ou à un autre null
Vous ne pouvez pas comparer les valeurs NULL avec =.
Utilisez ceci:
update userloginstats set logouttime= sysdate where logouttime is null;
logouttime is null
, pas = null
. {[2] } n'est jamais égal à rien, pas même à lui-même. Ainsi, l'opérateur is
.
, Vous devez utiliser is null
pas = null
update userloginstats set logouttime= sysdate where logouttime is null;
Pour les valeurs null, vous devez utiliser "EST NULL" ou "n'EST PAS vide" plutôt que l'opérateur=. C'est parce que null n'est techniquement ni vrai ni faux, c'est plutôt l'absence d'une valeur de toute façon.
La plupart des langages de programmation associent généralement null à false pour plus de commodité (et permettant ainsi l'utilisation de l'opérateur=), mais SQL adopte une approche plus puriste, à tort ou à raison.