Bonjour,

J'ai un problème en sql (sous sql server 2003), voici mes 3 requètes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
SELECT  champ1 
FROM table1
WHERE id = 203;
 
==> 9 resultats
 
1
1
NULL
3
10
1
NULL
3
1
 
-------------------------------------
 
SELECT champ1   
FROM table1
WHERE id  = 203
AND champ1 NOT IN ('1','3','9','10');
 
==> 0 resultats
 
--------------------------------------
 
SELECT champ1   
FROM table1
WHERE id  = 203
AND champ1  IN ('1','3','9','10');
 
==> 7 resultats
 
1
1
3
10
1
3
1
 
----------------------------------
Si j'additionne 7 et 0 j'ai pas 9 ... il semble que mes 2 enregistrement a NULL aient "sauté".
Est ce que quelqu'un peut me fournir une explication censée à ces résultats ? Ou est ce un bug sql server, ou j'ai mal compris le IN, le NOT IN ou le NULL.

Voilou