DECODE: Decodifica valori

Come:

Riferimento:

Lingue disponibili: reporting, Maintain

La funzione DECODE assegna dei valori in base al valore codificato di un campo di immissione. DECODE è utile per dare un valore più significativo ad un valore codificato in un campo. Per esempio, il campo GENDER potrebbe presentare il codice F per i dipendenti donna e M per i dipendenti uomo, per la memorizzazione efficiente (per esempio, un carattere invece che sei per donna). DECODE espande (decodifica) questi valori per assicurare l'interpretazione corretta su un prospetto.

È possibile utilizzare DECODE, fornendo valori direttamente alla funzione o leggendo valori da un file separato.


Inizio pagina

x
Sintassi: Come fornire valore nella funzione
DECODE fieldname(code1 result1 code2 result2...[ELSE default ]);
DECODE fieldname(filename ...[ELSE default]);

dove:

fieldname

Alfanumerico o Numerico

Nome del campo di immissione.

codice

Alfanumerico o Numerico

Valore codificato che DECODE paragona al valore corrente di filedname. Se il valore presenta spazi incorporati, virgole o altri caratteri speciali, racchiuderlo nelle virgolette singole. Quando DECODE trova il valore specificato, restituisce il risultato corrispondente. Quando il codice è paragonato al valore del nome del campo, il codice e il nome del campo devono essere nello stesso formato".

risultato

Alfanumerico o Numerico

Valore restituito che corrisponde al codice. Se il valore presenta spazi, virgole, o contiene un numero negativo, racchiuderlo nelle virgolette singole. Non usare le virgolette doppie (").

Se il risultato è presentano in formato alfanumerico, deve essere una stringa non-vuota e non-nulla. Il formato del risultato deve corrispondere al tipo di dati nell'espressione.

valore predefinito

Alfanumerico o Numerico

Valore restituito come risultato per codici non corrispondenti. Il formato deve essere lo stesso del formato del risultato. Se si omette un valore predefinito, DECODE restituisce uno spazio vuoto o uno zero ai codici non corrispondenti.

filename

Alfanumerico

Il nome del file, la quale coppia codice/risultato viene memorizzata. Ciascun record nel file deve contenere una coppia.

È possibile utilizzare fino a 40 righe per definire il codice e le coppie di risultati per qualsiasi data funzione DECODE, o 39 righe se si utilizza inoltre una frase ELSE. Utilizzare o una virgola o uno spazio per separare il codice dal risultato, o una coppia da un'altra.

Nota: DECODE non presenta argomento di emissione.



Esempio: Fornitura valori usando la funzione DECODE

EDIT estrae il primo carattere del campo CURR_JOBCODE, quindi DECODE restituisce o ADMINISTRATIVE o DATA PROCESSING, a seconda del valore estratto.

TABLE FILE EMPLOYEE
PRINT CURR_JOBCODE AND COMPUTE
DEPX_CODE/A1 = EDIT(CURR_JOBCODE, '9$$'); NOPRINT AND COMPUTE
JOB_CATEGORY/A15 = DECODE DEPX_CODE(A 'ADMINISTRATIVE' 
              B 'DATA PROCESSING');
BY LAST_NAME
WHERE DEPARTMENT EQ 'MIS';
END

L'emissione è:

LAST_NAME    CURR_JOBCODE    JOB_CATEGORY
---------    ------------    ------------
BLACKWOOD    B04             DATA PROCESSING
CROSS        A17             ADMINISTRATIVE
GREENSPAN    A07             ADMINISTRATIVE
JONES        B03             DATA PROCESSING
MCCOY        B02             DATA PROCESSING
SMITH        B14             DATA PROCESSING

Inizio pagina

x
Riferimento: Linee guida per la lettura di valori da un file


Esempio: Lettura valori DECODE da un file

Il seguente esempio presenta due parti. La prima parte crea un file con un elenco di ID e legge l'origine dati EDUCFILE. La seconda parte legge l'origine dati EMPLOYEE e assegna 0 a quei dipendenti che hanno frequentato classi e 1 a quei dipendenti che non le hanno frequentate. Il file HOLD contiene solo una colonna di valori. Quindi, DECODE assegna il valore 0 ad un dipendente, il quale EMP_ID appare nel file e 1, quando EMP_ID non appare nel file.

TABLE FILE EDUCFILE
PRINT EMP_ID
ON TABLE HOLD
END
TABLE FILE EMPLOYEE
PRINT EMP_ID AND LAST_NAME AND FIRST_NAME AND COMPUTE 
NOT_IN_LIST/I1 = DECODE EMP_ID(HOLD ELSE 1); 
WHERE DEPARTMENT EQ 'MIS';
END

L'emissione è:

EMP_ID     LAST_NAME        FIRST_NAME  NOT_IN_LIST
------     ---------        ----------  -----------
112847612  SMITH            MARY                  0
117593129  JONES            DIANE                 0
219984371  MCCOY            JOHN                  1
326179357  BLACKWOOD        ROSEMARIE             0
543729165  GREENSPAN        MARY                  1
818692173  CROSS            BARBARA               0

WebFOCUS