Comment dire "si null, retourne 0" dans un select ?? [SQL] - SQL/NoSQL - Programmation
Marsh Posté le 31-01-2003 à 15:48:44
ReplyMarsh Posté le 31-01-2003 à 15:50:15
ptibonom a écrit : |
utilise pas un décode pour ca !
NVL(champs, valeurSiNull)
Marsh Posté le 31-01-2003 à 15:50:31
ptibonom a écrit : |
Ah voui, mais decode, c'est sous Oracle, et ça marche pas par exemple sous DB2. Mais tu as des équivalent avec des CASE( ... ) ou avec des WHEN ... THEN ... ELSE ..., ça dépend du SGBD.
Marsh Posté le 03-02-2003 à 09:23:06
,
merci pour toutes les réponses. on est sous oracle donc le decode fonctionnerait. mno collègue a déjà testé ça SELECT NVL(MAX(REFVERS0),0) et ça a l'air de convenir ...
Marsh Posté le 03-02-2003 à 10:19:49
euh...c surement bete, mais y aurait pas moyen de definir 0 comme valeur par defaut ?
Marsh Posté le 31-01-2003 à 11:41:38
,
disons que j'ai la requête d'insertion suivante. La clé primaire de la table est une référence (champs REFVERS0) à incrémenter simplement, sachant que les normes de la société ne permette pas de laisser Oracle gérer lui même les références.
EF2MVER5.INSERT=INSERT INTO EF2VER ( REFVERS0, CDAPPLI0, CDPROIDF, NUMVERS0, DTCREVER, HRCREVER, NBTENRVE, NBCHARVE, NBENRDER, DTDERCHG, HRDERCHG, DTEXTVER, HREXTVER ) VALUES ((SELECT MAX(REFVERS0)FROM VEF2VER0)+1 , (SELECT EF2PRO.CDAPPLI0 FROM EF2PRO WHERE EF2PRO.CDPROIDF = ?) , ?, ?, ?, ?, ?, ?, ?, ?, ? , ?, ? )
Vous remarquerez le select dynamique qui va cherchez la plus grande référence existante. Mon problème est qu'en cas de table vide, ce select retourne null et que null + 1, ça fait tjrs null et ça plante.
Bref ma question : qqn sait-il comment coder dans le select "si null, retourne 0" ? ça doit être tout con mais on est vendredi et je coince ...