addition de colonnes...

addition de colonnes... - SQL/NoSQL - Programmation

Marsh Posté le 29-05-2003 à 16:30:28    

Salut !
 
J'ai besoin de faire une selection d'entier dans differentes colonnes d'une table, et d'en faire l'addition en mysql.
 
Pb:  pour mysql Null + 3 = Null
 
Donc, si une seule de mes colonnes a la valeur Null, je ne peux avoir le résultat.
 
Comment faire ?????
Merci !

Reply

Marsh Posté le 29-05-2003 à 16:30:28   

Reply

Marsh Posté le 29-05-2003 à 16:49:20    

si ta premiere colonne est un entier, elle sera à 0 et non a null si aucune valeur n'y est introduite.
sinon, tu n'espere quand meme pas additionner une chaine de caractere avec un entier? :heink:
... et puis il doit y avoir une fonction pour convertir en entier..


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 29-05-2003 à 17:28:26    

il existe la fonction IFNULL(param1, param2)
Si param1 est à NULL, elle renvoie param2, sinon param1
 
Dans ton cas, tu peux faire IFNULL(colonne, 0) + 3, pour donner la valeur par défaut 0 à ta colonne lorsqu'elle est NULL.

Reply

Marsh Posté le 03-06-2003 à 15:30:56    

Merci ! ca marche nickel  !

Reply

Marsh Posté le 03-06-2003 à 20:44:53    

the real moins moins a écrit :

si ta premiere colonne est un entier, elle sera à 0 et non a null si aucune valeur n'y est introduite.
sinon, tu n'espere quand meme pas additionner une chaine de caractere avec un entier? :heink:
... et puis il doit y avoir une fonction pour convertir en entier..


Non, un SGBD propre fait la différence entre NULL et 0
 
NULL = non renseigné
0 = renseigné et à 0

Reply

Marsh Posté le 04-06-2003 à 02:17:10    

oui mais il parlait de mysql, et je crois que mysql met 0 par defaut, mais je peux me tromper :o


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 04-06-2003 à 10:04:05    

Non, NULL n'est pas équivalent à la valeur 0. Ce sont 2 choses bien distinctes, même avec mysql.

Reply

Marsh Posté le 04-06-2003 à 12:15:57    

je sais bien que c'est deux notions distinctes ([:mlc]), mais dans mon mysql mes colonnes de type int sont à 0 qd elles n'ont pas de valeur spécifique :o
(j'ai pas le tps de vérifier, si ça se trouve c'est parce que les colonnes ont été créées avec "default 0" :whistle:)


Message édité par the real moins moins le 04-06-2003 à 12:16:33

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 04-06-2003 à 14:47:55    

the real moins moins a écrit :

(j'ai pas le tps de vérifier, si ça se trouve c'est parce que les colonnes ont été créées avec "default 0" :whistle:)


:lol: y'a des chances en effet ;)
 
A ma connaissance, y'a que Oracle 8 pour pas faire la différence, et encore ce n'est qu'au niveau des varchar2 (tout le reste passe sauf ça) : si tu insère '' (chaîne vide) ce gros crétin des îles enregistre null...
 
Du coup, proutch, y'a tout qui plante dans tous les sens parceque tu n'as évidement mis des not null partout, et dans ton code, t'as pas prévu que la chaîne que tu viens d'inserrer pouvait par l'oppération du saint esprit oracle devenir nulle :sarcastic:

Reply

Marsh Posté le 04-06-2003 à 14:51:57    

MagicBuzz a écrit :


:lol: y'a des chances en effet ;)

euh bon en effet c'etait le cas :whistle:
(colonne declarée notnull - "default 0" du coup)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 04-06-2003 à 14:51:57   

Reply

Marsh Posté le 08-06-2003 à 00:45:42    

nvl c fait pour des prunes vous pensez, ca doit etre seulement pour oracle malheuresement
 
dc si j'ai bien compris sous mysql, c ifnull(param1,para2);

Reply

Marsh Posté le 08-06-2003 à 00:50:23    

Oui. Avec mysql, IFNULL(param1, param2) renvoie param1 s'il est non NULL, ou param2 si param1 est à NULL.
(ca peut renvoyer NULL, si les 2 paramètres sont à NULL)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed