2010-10-13 8 views
21

Salut, je veux mettre à jour une table comme suitecolonnes de mise à jour avec les valeurs NULL

update userloginstats set logouttime= sysdate where logouttime= null; 

Mais il n'a pas mettre à jour les colonnes avec des valeurs nulles. ce qui ne va pas

+1

Répondre

42

Modifier à

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

NULL est une valeur spéciale et nous ne pouvons pas utiliser l'opérateur = habituelle avec elle.

De l'Oracle documentation for NULL:

Pour tester les valeurs NULL, utilisez seulement les conditions de comparaison IS NULL et IS NOT NULL. Si vous utilisez une autre condition avec des valeurs nulles et que le résultat dépend de la valeur de null, alors le résultat est INCONNU car nul ne représente un manque de données, ne peut pas être être égal ou non à une valeur quelconque ou à un autre

3

logouttime is null, et non = null. null n'est jamais égal à rien, même pas lui-même. Ainsi, l'opérateur is.

2

Vous devez utiliser is null pas = null

update userloginstats set logouttime= sysdate where logouttime is null; 
6

Vous ne pouvez pas comparer avec NULLs =.

Utilisez ceci:

update userloginstats set logouttime= sysdate where logouttime is null; 
0

Pour vous devez utiliser nulls "IS NULL" ou "IS NOT NULL" 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 avec false pour plus de commodité (et permettant ainsi l'utilisation de l'opérateur =), mais SQL adopte une approche plus puriste, à tort ou à raison.

Questions connexes