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
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
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 nul
Code : Sélectionner tout - Visualiser dans une fenêtre à part COALESCE(TonChamp, 0)
--- Sevyc64 ---
Parce que le partage est notre force, la connaissance sera notre victoire
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager