SQL et champs numériques vides
Citation de nombre pi le 1 mars 2019, 11 h 48 minBonjour,
Soit un fichier LIB1/PF1 je sais que dans certains enregistrements certains champs de zones numériques n'ont pas été initialisés.
Je voudrais affecter la valeur zéro à tout champs numérique qui ne contient pas de valeur.Comment faire ?
Bonjour,
Soit un fichier LIB1/PF1 je sais que dans certains enregistrements certains champs de zones numériques n'ont pas été initialisés.
Je voudrais affecter la valeur zéro à tout champs numérique qui ne contient pas de valeur.
Comment faire ?
Citation de remit le 1 mars 2019, 13 h 08 min
UPDATE LIB1/PF1 SET ZONE_NUM = 0 WHERE ZONE_NUM IS NULL
UPDATE LIB1/PF1 SET ZONE_NUM = 0 WHERE ZONE_NUM IS NULL
Citation de nombre pi le 1 mars 2019, 13 h 16 minMerci remit mais LIB1/PF1 peut contenir plusieurs colonnes ou zones numériques et je voudrais les traiter toutes.
Au fait je ne voudrais pas faire ça pour un fichier en particulier, je voudrais le faire pour tous les fichiers de LIB1. Chaque fichier ayant ses propres colonnes.
Merci remit mais LIB1/PF1 peut contenir plusieurs colonnes ou zones numériques et je voudrais les traiter toutes.
Au fait je ne voudrais pas faire ça pour un fichier en particulier, je voudrais le faire pour tous les fichiers de LIB1. Chaque fichier ayant ses propres colonnes.
Citation de remit le 1 mars 2019, 13 h 37 minAlors, il faut répéter la commande autant de fois que nécessaire (quitte à les placer dans un fichier à lancer par RUNSQLSTM).
Alors, il faut répéter la commande autant de fois que nécessaire (quitte à les placer dans un fichier à lancer par RUNSQLSTM).
Citation de nombre pi le 1 mars 2019, 14 h 25 min...oui mais je ne connais pas à priori les noms des colonnes numériques
...oui mais je ne connais pas à priori les noms des colonnes numériques
Citation de remit le 1 mars 2019, 14 h 57 minOn peut interroger SYSCOLUMNS :
SELECT SYSTEM_COLUMN_NAME FROM QSYS2.SYSCOLUMNS WHERE SYSTEM_TABLE_SCHEMA = 'LIB1' AND SYSTEM_TABLE_NAME = 'FIC1' AND DATA_TYPE IN('DECIMAL', 'SMALLINT', 'NUMERIC', 'INTEGER', 'BIGINT')
On peut interroger SYSCOLUMNS :
SELECT SYSTEM_COLUMN_NAME FROM QSYS2.SYSCOLUMNS WHERE SYSTEM_TABLE_SCHEMA = 'LIB1' AND SYSTEM_TABLE_NAME = 'FIC1' AND DATA_TYPE IN('DECIMAL', 'SMALLINT', 'NUMERIC', 'INTEGER', 'BIGINT')
Citation de Olivier Drubigny le 1 mars 2019, 14 h 59 minBonjour,
Il faudra se baser sur un fichier générer par DSPFFD.
ou pour les version IBM i les plus récentes sur les résultats obtenus par la requête:
Select COLUMN_NAME From SYSIBM.COLUMNS Where Type_Name in('SMALLINT', 'DECIMAL', 'NUMERIC', 'BINARY', 'BIGINT', 'VARBINARY', 'DOUBLE', 'REAL') And TABLE_SCHEM = 'MABIB' And TABLE_NAME = 'MATABLE' Cordialement, Olivier.
Bonjour,
Il faudra se baser sur un fichier générer par DSPFFD.
ou pour les version IBM i les plus récentes sur les résultats obtenus par la requête:
Select COLUMN_NAME From SYSIBM.COLUMNS Where Type_Name in('SMALLINT', 'DECIMAL', 'NUMERIC', 'BINARY', 'BIGINT', 'VARBINARY', 'DOUBLE', 'REAL') And TABLE_SCHEM = 'MABIB' And TABLE_NAME = 'MATABLE' Cordialement, Olivier.
Citation de nombre pi le 1 mars 2019, 15 h 30 minJ'ai testé ceci :
SELECT SYSTEM_COLUMN_NAME FROM QSYS2.SYSCOLUMNS WHERE SYSTEM_TABLE_SCHEMA = 'MALIB' AND SYSTEM_TABLE_NAME = 'PF1' AND DATA_TYPE IN('DECIMAL', 'SMALLINT', 'NUMERIC', 'INTEGER', 'BIGINT')ça fonctionne bien.
Mais j'ai remarqué une chose. La requête suivante
SELECT TABLE_NAME, SYSTEM_COLUMN_NAME FROM SYSCOLUMNS WHERE SYSTEM_TABLE_SCHEMA = 'MALIB'Ne me retourne qu'une seule colonne TABLE_NAME et pas SYSTEM_COLUMN_NAME .
J'ai testé ceci :
SELECT SYSTEM_COLUMN_NAME FROM QSYS2.SYSCOLUMNS WHERE SYSTEM_TABLE_SCHEMA = 'MALIB' AND SYSTEM_TABLE_NAME = 'PF1' AND DATA_TYPE IN('DECIMAL', 'SMALLINT', 'NUMERIC', 'INTEGER', 'BIGINT')
ça fonctionne bien.
Mais j'ai remarqué une chose. La requête suivante
SELECT TABLE_NAME, SYSTEM_COLUMN_NAME FROM SYSCOLUMNS WHERE SYSTEM_TABLE_SCHEMA = 'MALIB'
Ne me retourne qu'une seule colonne TABLE_NAME et pas SYSTEM_COLUMN_NAME .
Citation de remit le 1 mars 2019, 15 h 36 minSi c'est par STRSQL, il faut paginer à droite (F20), la colonne TABLE_NAME est très large (ou alors
CAST(TABLE_NAME AS CHAR(10))
)(aussi, ajouter les types numériques indiqués par Olivier Drubigny et que je n'avais pas mentionnés).
Si c'est par STRSQL, il faut paginer à droite (F20), la colonne TABLE_NAME est très large (ou alors CAST(TABLE_NAME AS CHAR(10))
)
(aussi, ajouter les types numériques indiqués par Olivier Drubigny et que je n'avais pas mentionnés).
Citation de nombre pi le 1 mars 2019, 15 h 57 minCitation de remit le 1 mars 2019, 15 h 36 minSi c'est par STRSQL, il faut paginer à droite (F20), la colonne TABLE_NAME est très large (ou alors
CAST(TABLE_NAME AS CHAR(10))
)(aussi, ajouter les types numériques indiqués par Olivier Drubigny et que je n'avais pas mentionnés).
Ah oui, je ne l'avais pas remarqué. Merci beaucoup remit.
Citation de remit le 1 mars 2019, 15 h 36 minSi c'est par STRSQL, il faut paginer à droite (F20), la colonne TABLE_NAME est très large (ou alors
CAST(TABLE_NAME AS CHAR(10))
)(aussi, ajouter les types numériques indiqués par Olivier Drubigny et que je n'avais pas mentionnés).
Ah oui, je ne l'avais pas remarqué. Merci beaucoup remit.