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
- Numéro de téléphone excel 0 - Guide
- Void(0) - Forum Mozilla Firefox
- En informatique, les informations sont codées par des 0 et des 1, appelés bits. un bit correspond à un espace mémoire. parmi les séquences ci-dessous, lesquelles occupent le moins d'espace en mémoire ? - Forum Programmation
- Qualité de signal parabole 0 - Forum TNT / Satellite / Réception
- Erreur 0 free - Forum Samsung
7 réponses
dna.factory
Messages postés
25640
Date d'inscription
mercredi 18 avril 2007
Statut
Modérateur
Dernière intervention
18 mars 2025
1 615
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
25640
Date d'inscription
mercredi 18 avril 2007
Statut
Modérateur
Dernière intervention
18 mars 2025
1 615
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
1685
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.