Comment écrire DB2 instruction SELECT dans la décharger de l'emploi pour les délimiteurs
J'ai été au cours de cette... semble idiot, mais ne pourrais pas comprendre!
Je veux DÉCHARGER une table, mais avec un séparateur '|', entre les champs. Voici le JCL utilisé pour le déchargement de la table:
//JS020 EXEC PGM=IKJEFT01,
// DYNAMNBR=20
//*
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSPUNCH DD SYSOUT=*
//*
//SYSTSIN DD *
DSN SYSTEM(XXXX)
RUN PROGRAM(DSNTIAUL) PLAN(DSNTIAUL) PARM('SQL')
//*
//SYSREC00 DD DSN=TABLEA.UNLOAD.FILE,
// DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,LRECL=80
//SYSIN DD *
SELECT COLUMN1
,'|',COLUMN2
,'|',COLUMN3
,'|',COLUMN4
,'|',COLUMN5
FROM TABLEA
WITH UR;
/*
//*
Sortie rendements
VALUEA..|VALUEB..|VALUEC..|VALUED..|VALUEE
VALUEA..|VALUEB..|VALUEC..|VALUED..|VALUEE
VALUEA..|VALUEB..|VALUEC..|VALUED..|VALUEE
VALUEA..|VALUEB..|VALUEC..|VALUED..|VALUEE
VALUEA..|VALUEB..|VALUEC..|VALUED..|VALUEE
Mais j'aimerais avoir comme ci-dessous
VALUEA|VALUEB|VALUEC|VALUED|VALUEE
VALUEA|VALUEB|VALUEC|VALUED|VALUEE
VALUEA|VALUEB|VALUEC|VALUED|VALUEE
VALUEA|VALUEB|VALUEC|VALUED|VALUEE
VALUEA|VALUEB|VALUEC|VALUED|VALUEE
Je ne suis pas en mesure de déterminer pourquoi .. est en les précédant le séparateur '|'. Toute devine quelle en est la valeur? Merci pour votre intérêt.
OriginalL'auteur Raja Reddy | 2011-06-03
Vous devez vous connecter pour publier un commentaire.
Essayez de changer votre
SELECT
comme suit:De placer la corde constante
'|'
dans votre entrée crée une longueur variablechaîne de caractères sur la sortie. La longueur Variable des chaînes de caractères sont
précédé par un 2 octet binaire champ indiquant la longueur de la chaîne.
Dans votre cas, ce serait 01 (essayez d'afficher la sortie avec HEX.).
Puisque la longueur est un entier binaire de la valeur
il ne s'affiche pas comme vous l'attendiez.
La fonction scalaire
CHAR
convertit une variablelongueur de chaîne de caractères en longueur fixe chaîne de caractères, qui
est ce que vous attendiez.
Remarque: DSNTIAUL est différente de SPUFI, dont je soupçonne que vous êtes plus familier avec.
DSNTIAUL ne pas convertissez les données à caractère SPUFI. Donc, si vous avez utilisé
DSNTIAUL pour sélectionner une colonne contenant des données numériques (par exemple. DÉCIMAL), il sera écrit
pour votre fichier de sortie en binaire. De données VARCHAR sera écrit avec un leader 2 octets
la longueur du champ (comme ce fut le caractère " | " dans votre exemple). Les colonnes définies comme fixe
de caractères de longueur (par exemple. CHAR(5)) seront écrits comme des chaînes de caractères de longueur fixe (pas de
binaire de longueur de champ).
OriginalL'auteur NealB
Dans l'instruction select U vais couper la sortie de chaque colonne et append '|' à l'aide de concaténer opérateur.En tant que résultat de l'utilisation de la garniture il n'y aura pas d'espaces entre les colonnes et '|'.Pour plus d'Ref:Manuel d'IBM Sur la Garniture
OriginalL'auteur Linus Nelson
Utiliser la fonction CHAR:
OriginalL'auteur user8484338
OriginalL'auteur Christof