2010-08-23 3 views
3

j'ai trouvé ce site: hereun comportement étrange avec « IN » article fonctionne

son très bien décrit pourquoi cela fonctionne et pourquoi pas.

mais ma question est un peu différente.

select 'true' from dual where 'test' not in ('test2',''); 

Pourquoi cette requête ne retient-elle pas une ligne?
est '' géré comme null?

thx pour votre aide

+2

Je ne suis pas sûr (je suis une personne SQL Server) mais je pense qu'Oracle gère '' comme nul. – HLGEM

+0

duplication possible de [Pourquoi Oracle 9i traite-t-il une chaîne vide comme NULL?] (Http://stackoverflow.com/questions/203493/why-does-oracle-9i-treat-an-empty-string-as-null) – APC

+1

@APC - Pas vraiment. Cette question est: «Est-ce que ça ...?» Pas «pourquoi ça ...?» –

Répondre

12

Vos soupçons were correct.

Ainsi, votre requête est essentiellement

WHERE 'test' <> 'test2' and 'test' <> Null 

qui évalue comme

WHERE true and unknown 

Ce qui est unknown

select * from dual where '' = ''; 

donnera le même (manque de) résultats

+0

super, merci pour votre réponse. Oracle et null manipulant un chapitre pour ... – domiSchenk

2

Oui, dans Oracle, une chaîne vide est une valeur NULL.