Pb avec une instruction SQL

Résolu
cs_jacques13 Messages postés 252 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 29 juin 2013 - 12 juil. 2009 à 15:16
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 20 juil. 2009 à 09:25
Bonjour,

Dans mon appli j'utilise parfois des commandes SQL simplissimes qui fonctionnent très bien, du genre:

SELECT Bor FROM Table1 WHERE const = 'O'

Malheureusement d'autres commandes telles que:

SELECT Bor FROM Table1 WHERE const IS NULL

ne veulent rien savoir même s'il existe bien des résultats correspondants!

Je dois sûrement faire une erreur quelque part mais je n'arrive pas à voir où.

Quelqu'un peut-il me dépanner?

Jacques13

12 réponses

LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
14 juil. 2009 à 12:56
Si ce champ est servi par "O" , "N" ou rien, alors inverse l' expression:
SELECT Bor FROM Table1 WHERE const <> 'O' AND const <> 'N'


Ce qui fait qu' il ne te restera plus que les occurences ou const est vide (ou null).

Si ça marche pas ,essaies ensuite d' ajouter const aux champs enumérés.
SELECT Bor, const FROM Table1 WHERE const <> 'O' AND const <> 'N'

Si toutefois const est un champ de la table Table1 ...
     
<hr />


[] Ce qui va sans dire. va mieux en le disant.


<hr />
3
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
12 juil. 2009 à 19:03
Essaie ça : SELECT Bor FROM Table1 WHERE const IS NULL OR const = ''
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
13 juil. 2009 à 01:14
Bonsoir,
restons dans le simpliste:
SELECT Bor FROM Table1 WHERE const = NULL...


N' oublions pas que Null est une valeur en elle même.Au même titre que n' importe quelle autre valeur.
Or WHERE const IS NULL(qui pourrait se traduire par WHERE const EST NULLE) ne veut rien dire en terme SQL.
Sauf si on pense à la fonction IsNull().Dans ce cas il faudra s' y prendre autrement...
       
<hr />


[] Ce qui va sans dire. va mieux en le disant.


<hr />
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
13 juil. 2009 à 01:26
Salut
Max, je te contredis, excuses.

"IsNull" est une fonction, exemple
   Select IsNull(monChamp, '<vide>') ...
Permet de remplacer, à l'affichage, une valeur nulle par une chaine au choix

"Is Null" est une condition, exemple
   ... Where monChamp Is Null

Par contre, Jacques13 (joli prénom, en passant
), un champ rempli avec un Null n'est pas la même chose qu'un champ vide comme ''

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
13 juil. 2009 à 01:29
Voir la proposition de Ghuysmans99
D'autre part, évite d'utiliser des mots clés de langage comme nom de champ, tu pourrais avoir des surprises, un jour : il arrive que le moteur ne sache pas reconnaitre le nom du champ d'une table mais l'instruction, provoquant des erreurs pas toujours facile à déceler.
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
13 juil. 2009 à 01:51
Exact Jack,
"Is Null" est une condition, exemple
   ... Where monChamp Is Null

Pour preuve les requetes de non correspondance.

Je me suis un peu egaré.

Reste que const=Null reste valable.
Au fait, const n' est-il  pas un mot reservé ?

<hr />

[] Ce qui va sans dire. va mieux en le disant.

<hr />
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
13 juil. 2009 à 01:58
J' arrive trop tard à ce que je vois, avec ma remarque sur le mot reservé !

<hr />

[] Ce qui va sans dire. va mieux en le disant.

<hr />
0
cs_jacques13 Messages postés 252 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 29 juin 2013
13 juil. 2009 à 21:01
Merci à tous ceux qui ont parcicipé à cette discussion.
Malheureusement mon truc ne fonctionne toujours pas.
L'astuce de Ghuysmans99 évite au système de se planter mais me fournit 2 occurrences erronées (sur une trentaine de correctes attendues).
Que faire?
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
14 juil. 2009 à 00:48
Tu veux dire quoi par 2 occurences erronées ?
Est-ce que, à la différences des autres, dans ces deux là , const n' est ni null ni vide ?

Difficile de savoir ou est l' erreur sans plus de détails.
D' autant plus qu' on ne sait toujours pas de quel type est le champ const.

A+

<hr />

[] Ce qui va sans dire. va mieux en le disant.

<hr />
0
cs_jacques13 Messages postés 252 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 29 juin 2013
14 juil. 2009 à 12:14
Bonjour Max,
Ce champ est servi par "O" , "N" ou rien.
Les 2 occurences erronées sont, en l'occurence, si je puis dire, toutes deux à la valeur "O".
A+
0
cs_jacques13 Messages postés 252 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 29 juin 2013
14 juil. 2009 à 19:56
Merci Max,
De cette façon, ça a l'air de marcher.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 juil. 2009 à 09:25
ou bien encore
WHERE const Not In ('O', 'N')

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Rejoignez-nous