Pb de différenciation entre null et 0 en SQL
Résolu/Fermé
A voir également:
- Pb de différenciation entre null et 0 en SQL
- Null a envoyé un message - Forum Audio
- Messenger marque null - Forum Mail
- Si #n/a alors 0 - Forum Bureautique
- Numéro de téléphone excel 0 - Guide
- 0.facebook.cοm ✓ - Forum Facebook
7 réponses
dna.factory
Messages postés
24947
Date d'inscription
mercredi 18 avril 2007
Statut
Modérateur
Dernière intervention
23 avril 2024
1 609
4 nov. 2011 à 10:33
4 nov. 2011 à 10:33
0 est une valeur
null n'est pas une valeur
0 est 'plein'
null est vide
0 doit etre renseigné dans la base
(après, cela peut varier selon le logiciel utilisé)
null n'est pas une valeur
0 est 'plein'
null est vide
0 doit etre renseigné dans la base
(après, cela peut varier selon le logiciel utilisé)
Oui c'est bien ce qui me semblait. Mais j'ai un soucis au niveau de mon developpement :
$progiciel[(empty($donnees1['id_pgc']) ? "".'"selected ="selected' : '')] = 'Autre';
$progiciel[($donnees1['id_pgc'] == 0 ? "0".'"selected ="selected' : 0)] = 'Aucun';
Dans mon application il me fait un selected sur les 2. Alors que dans ma base, id_pgc = 0. Je ne comprend pas d'ou vient l'erreur.
$progiciel[(empty($donnees1['id_pgc']) ? "".'"selected ="selected' : '')] = 'Autre';
$progiciel[($donnees1['id_pgc'] == 0 ? "0".'"selected ="selected' : 0)] = 'Aucun';
Dans mon application il me fait un selected sur les 2. Alors que dans ma base, id_pgc = 0. Je ne comprend pas d'ou vient l'erreur.
dna.factory
Messages postés
24947
Date d'inscription
mercredi 18 avril 2007
Statut
Modérateur
Dernière intervention
23 avril 2024
1 609
4 nov. 2011 à 12:28
4 nov. 2011 à 12:28
comme je l'ai dit, ça peut malheureusement varier selon le logiciel.
je t'ai donné la théorie sur laquelle on se rejoint.
je sais qu'il existe en sql la comparaison 'is null'
SELECT id FROM table WHERE champ IS NULL;
essaye d'attaquer différement ta base avec cette requete, puis avec celle =0 ou <1 et de voir si tu as les même résultat
je t'ai donné la théorie sur laquelle on se rejoint.
je sais qu'il existe en sql la comparaison 'is null'
SELECT id FROM table WHERE champ IS NULL;
essaye d'attaquer différement ta base avec cette requete, puis avec celle =0 ou <1 et de voir si tu as les même résultat
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Justement j'ai fait cette requête. Et j'ai testé, cela me les différencie bien.
Quand je met WHERE XX IS NULL , on me renvoie que les tuples dont XX est null.
Quand je met WHERE XX = 0, on me renvoie que les tuples dont XX est égal à 0.
Donc je ne comprend pas pourquoi ma condition, ne marche pas.
$progiciel[(empty($donnees1['id_pgc']) ? "".'"selected ="selected' : '')] = 'Autre';
$progiciel[($donnees1['id_pgc'] == 0 ? "0".'"selected ="selected' : 0)] = 'Aucun';
Il me met les 2 select en selected, lorsque XX est null ou lorsque XX = 0. Alors qu'il ne devrait faire que l'un ou l'autre.
Quand je met WHERE XX IS NULL , on me renvoie que les tuples dont XX est null.
Quand je met WHERE XX = 0, on me renvoie que les tuples dont XX est égal à 0.
Donc je ne comprend pas pourquoi ma condition, ne marche pas.
$progiciel[(empty($donnees1['id_pgc']) ? "".'"selected ="selected' : '')] = 'Autre';
$progiciel[($donnees1['id_pgc'] == 0 ? "0".'"selected ="selected' : 0)] = 'Aucun';
Il me met les 2 select en selected, lorsque XX est null ou lorsque XX = 0. Alors qu'il ne devrait faire que l'un ou l'autre.
vordano
Messages postés
1682
Date d'inscription
mardi 12 juillet 2011
Statut
Membre
Dernière intervention
20 juillet 2012
316
4 nov. 2011 à 13:33
4 nov. 2011 à 13:33
bonjour,
ya un truc qui me chiffone, pourquoi tu as autant de guillemet ? tu en as mis autour du 0 dans la seconde ligne, donc tu traite ca comme un string, sauf que tu l'affecte a rien, ensuite ya un caractere qui ressemble a un point suivi de guillemet et apostrophe (double et simple quote).
enfin c'est tellement le fouilli que je me demande si tu code vraiment en php et non en vba... (ya qu'avec le vba qu'on peux faire autant de bazard et faire en sorte que ca marche ^^')
tu devrais décomposer ton if d'une manière plus classique au lieu de mélanger les test booléen, les affectations etc...
ca te permettrais de mieu construire ton code et de ne pas faire d'erreur (à mon avis tu as voulu faire d'une manière si condensé que l'interpreteur ne pige plus rien au code)
j'espère avoir pus t'aider a mieux comprendre le problème
ya un truc qui me chiffone, pourquoi tu as autant de guillemet ? tu en as mis autour du 0 dans la seconde ligne, donc tu traite ca comme un string, sauf que tu l'affecte a rien, ensuite ya un caractere qui ressemble a un point suivi de guillemet et apostrophe (double et simple quote).
enfin c'est tellement le fouilli que je me demande si tu code vraiment en php et non en vba... (ya qu'avec le vba qu'on peux faire autant de bazard et faire en sorte que ca marche ^^')
tu devrais décomposer ton if d'une manière plus classique au lieu de mélanger les test booléen, les affectations etc...
ca te permettrais de mieu construire ton code et de ne pas faire d'erreur (à mon avis tu as voulu faire d'une manière si condensé que l'interpreteur ne pige plus rien au code)
j'espère avoir pus t'aider a mieux comprendre le problème
Ca y'est ! J'ai trouvé.. A force d'acharnement, j'ai trouvé l'erreur. La voici :
C'est le empty() qui posait probleme : il fallait plutôt mettre is_null().
$donnees1['id_pgc'] == 0 etait pas bon également, il fallait mettre des quote entre le 0 ==> $donnees1['id_pgc'] == "0"
Cela donne
$progiciel[(is_null($donnees1['id_pgc']) ? "".'"selected ="selected' : '')] = 'Autre';
$progiciel[($donnees1['id_pgc'] == "0" ? "0".'"selected ="selected' : 0)] = 'Aucun';
Merci à ceux qui m'ont répondu.
C'est le empty() qui posait probleme : il fallait plutôt mettre is_null().
$donnees1['id_pgc'] == 0 etait pas bon également, il fallait mettre des quote entre le 0 ==> $donnees1['id_pgc'] == "0"
Cela donne
$progiciel[(is_null($donnees1['id_pgc']) ? "".'"selected ="selected' : '')] = 'Autre';
$progiciel[($donnees1['id_pgc'] == "0" ? "0".'"selected ="selected' : 0)] = 'Aucun';
Merci à ceux qui m'ont répondu.