Vous n'êtes pas identifié(e).

#1 Re : PL/pgSQL » Not In Avec Valeur Null » 09/09/2010 09:51:56

Bonjour,

tout d'abord merci pour ta réponse.

donc si j'ai bien compris NULL n'est pas rien ,mais une valeur inconnu.... or d'après certains sites NULL est bien l'abscence de valeur (http://www.linuxtopia.org/online_books/ … 32_001.htm)

De plus, si un fait une reqete SELECT * FROM t2 WHERE champ2 <> NULL cette requête marche bien.... DONC si ma sous requête me retourne 2 valeurs, NULL et Test, en quoi le NOT IN ne fonctionne pas .... Ne possède-t-il pas un comportement tel que le where ?

Je te remercie pour ton aide, car je tiens vraiment à comprendre ce problème

Finality

#2 PL/pgSQL » Not In Avec Valeur Null » 08/09/2010 16:54:45

Finality
Réponses : 4

Bonjour tout le monde,

je viens vous voir car je viens de rencontrer un problème dont je n'arrive pas à expliquer le pourquoi du comment.

Je vais vous faire un descriptif de l'état initial :

je possède deux tables, t1 et t2, comprenant chacune 2 champs de type varchar, ce qui donne :

t1 : champ1, champ2
t2 : champ1, champ2

t2.champ2 peux être NULL

Lorsque je tente cette requête

SELECT * FROM t1 WHERE t1.champ1 NOT IN (SELECT t2.champ2 FROM t2);

Or, si ma sous requête me retourne des résultats NULL, le NOT IN ne fonctionne plus : t1.champ1 n'est pas dans la liste retournée par ma sous requête, mais il n'est pas retournée par la requête globale....

Je vous donne quelques requêtes pour pouvoir essayer :

CREATE TABLE t1(
  champ1 character varying(50),
  champ2 character varying(50)
)

CREATE TABLE t2(
  champ1 character varying(50),
  champ2 character varying(50)
)

INSERT INTO t1(champ1, champ2) VALUES('Non', 'Test');
INSERT INTO t2(champ1, champ2) VALUES('Test', 'Test');
INSERT INTO t2(champ1) VALUES('Test');

Je vous remercie d'avance pour votre éclaircicement
Cordialement

Finality

Pied de page des forums

Propulsé par FluxBB