Bonjour,
Comment remplacer une valeur nulle par la valeur 0 sous Dephi 7 ---->query1 (sql) ?
Exemple :
1+2+nul =3
nul+nul=0
1+2+3=6
Merci :roll:
Version imprimable
Bonjour,
Comment remplacer une valeur nulle par la valeur 0 sous Dephi 7 ---->query1 (sql) ?
Exemple :
1+2+nul =3
nul+nul=0
1+2+3=6
Merci :roll:
si les données sont issues d'une requête SQL, tu peux le faire directement dans la requête avec la fonction COALESCE si ton SGBD la supporte
COALESCE renvoit la première valeur non nulle rencontrée dans la listes des valeurs passées en paramètre, donc ici, TonChamp, ou sinon 0 s'il vaut nulCode:COALESCE(TonChamp, 0)
NON SGBD paratox7 ne la supporte pas TABLE1.COLONE1 + TABLE2.COLONE 2
1 + 1 = 2
+ 1 = (null)
1 + = (null)
-----------------------------------------------------------------------------------------------------------------
moi je veux
TABLE1.COLONE1 + TABLE2.COLONE 2
1 + 1 = 2
+ 1 = 1 (null)
1 + = 1 (null)
sous sql du delphi7 (sql builder) (query1)
MERCI
J'ai peur que ça soit impossible avec un SQL aussi simple.
Solution, passer par une table temporaire qui serait remplie avec les valeurs voulues.
Pour remplir chaque colonne on peut utiliser par exemple un truc dans le genre de :
Code:
1
2
3
4 select id, v1 from test where V1 is not null union select id, 0 from test where V1 is null V1
moi je cherche a remplacer une valeur null par 0 et faire ma somme
Peux-tu nous montrer ton code actuel ? Ça nous aidera à comprendre ce que tu veux faire...
Bonsoir,
Soit par exemple la table :
Ca fonctionne sur DB2, Firebird ...Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 create table TBL1 ( KEY char(10) not null, INT1 integer, INT2 integer, INT3 integer ) select KEY , case when INT1 is null then 0 else INT1 end INT1 , case when INT2 is null then 0 else INT2 end INT2 , case when INT3 is null then 0 else INT3 end INT3 order by KEY ;
solilog
sur DB2 sans doute mais pas avec Paradox
Bonjour et meilleurs vœux
la doc sur le SQL Local du BDE (et donc subséquemment pour Paradox) n'indique aucune possibilité de coalesce
vous n'avez donc que trois solutions en continuant à utiliser Paradox et BDE
-1 celle proposée par papy214 avec l'union
select id, colone1 from table where colone2 is null
union
select id, colone2 from table where colone1 is null
union
select id,colone1+colone2 from table where colone1 is not null and colone2 is not null
-2 au niveau de la BDD
- Faire un update des données de façon à remplacer les nulls par des 0
UPDATE TABLE SET COLONE1=0 WHERE COLONE1 IS NULL
UPDATE TABLE SET COLONE2=0 WHERE COLONE2 IS NULL
pour pouvoir faire ensuite le
SELECT COLONE1+COLONE2 FROM TABLE
- et par la suite la structure de la table de façon à ce que les colonnes n'accepte pas le nul
-3 faire les calculs par programme
ma préférence allant pour la solution 2, quoique ... mon vrai conseil :
IL EST PLUS QUE TEMPS DE CHANGER DE SGBD : BDE EST OBSOLETE DEPUIS PLUS DE 10 ANS