Bonjour à tous
c'est mon 1er message ici !

Voici mon problème (SGBD = Oracle 9.2.0.7) :
j'ai une requete qui utilise l'opérateur LIKE, ou plus présicément 'NOT LIKE', pour retourner les enregistrements d'une table dont l'un des champs ne contient pas une certaine chaine de caractères.
Le problème c'est que cette requète ne donne pas le résultat attendu si le champ sur lequel je fais le WHERE .. NOT LIKE .. est à NULL

Concrêtement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
SELECT COUNT(*) FROM MESSAGE
WHERE CLASS IN (1,2);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
  COUNT(*)
----------
         1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
SELECT OBJECT_DESCRIPTION FROM MESSAGE
WHERE CLASS IN (1,2);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
OBJECT_DESCRIPTION
--------------------------------------------------------------------------------
=> le champ est à NULL

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SELECT COUNT(*) FROM MESSAGE
WHERE CLASS IN (1,2)
AND OBJECT_DESCRIPTION NOT LIKE '%Unable to allocate a Priced CDR table%';
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
  COUNT(*)
----------
         0
La requète ne me retourne pas l'enregistrement dont le champ est à NULL ..

Est-ce un comportement normal ?
J'ai trouvé une solution en concaténant le champ avec un caractère quelconque pour qu'il ne soit plus NULL, est-ce qu'il y a une autre solution plus simple/propre ?

merci d'avance !
(et bonne année !)