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?

25
demandé sur 4444 2010-10-13 16:42:53

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

49
répondu codaddict 2010-10-13 12:49:48

Vous ne pouvez pas comparer les valeurs NULL avec =.

Utilisez ceci:

update userloginstats set logouttime= sysdate where logouttime is null;
7
répondu Lucero 2010-10-13 12:44:52

logouttime is null, pas = null. {[2] } n'est jamais égal à rien, pas même à lui-même. Ainsi, l'opérateur is.

5
répondu Donnie 2010-10-13 12:44:42

, Vous devez utiliser is null pas = null

update userloginstats set logouttime= sysdate where logouttime is null;
4
répondu Macros 2010-10-13 12:44:52

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.

1
répondu Maltronic 2010-10-13 22:10:01