Funzioni CAST supportate

Questo argomento elenca le funzioni CAST supportate tra combinazioni di tipi di dati.

Una funzione CAST non è supportata tra qualsiasi combinazione di tipi di dati. Quelle supportate sono riportate di seguito, insieme all'effetto dell'istruzione CAST.

Quando si esegue l'assegnazione, può esistere un'associazione uno a uno o più a uno tra il tipo di dati di origine e di destinazione. Un esempio di associazione uno a uno è quello in cui il tipo di dati di origine è un integer singolo ed il tipo di dati di destinazione è un float singolo. Un esempio di associazione più a uno è quello in cui i dati di origine sono formati da tre integer che vengono convertiti in una data singola. La Tabella 1 elenca le assegnazioni uno a uno supportate. La Tabella 2 elenca le assegnazioni più a uno supportate.

Consultare Tipi di dati ESQL per informazioni relative a precision, scale ed interval qualifier.

Tabella 1. Assegnazioni supportate: associazioni uno a uno di tipi di dati di origine e destinazione
Tipo di dati di origine Tipo di dati di destinazione Effetto
BIT BIT Il risultato è uguale all'input.
BIT BLOB L'array di bit è convertito in un array di byte con un massimo di 263 elementi. Viene visualizzato un errore se la lunghezza dell'origine non è adatta a produrre un BLOB (multiplo di 8).
BIT CHARACTER Il risultato è una stringa conforme alla definizione di un letterale della stringa di bit il cui valore interpretato è uguale al valore di origine. La stringa risultante ha il formato B'bbbbbb' (dove b è 0 oppure 1).

Se si specifica una clausola CCSID o ENCODING, l'array di bit si suppone composto da caratteri nella codifica e nel CCSID specificati, e viene convertito nel valore di ritorno del carattere.

Se si specifica solo un CCSID, si suppone la codifica big endian.

Se si specifica solo una codifica, si suppone il CCSID 1208.

Questa funzione riporta errori di conversione se la code page o la codifica sono sconosciute, i dati forniti non sono un numero integrale di caratteri della code page oppure i dati contengono caratteri non validi nella code page indicata.

BIT INTEGER L'array di bit ha un massimo di 263 elementi ed è convertito in un integer. Viene riportato un errore se la lunghezza dell'origine non è corretta per corrispondere ad un integer.
BLOB BIT L'array di byte fornito viene convertito in un array di bit con un massimo di 263 elementi.
BLOB BLOB Il risultato è uguale all'input.
BLOB CHARACTER Il risultato è una stringa conforme alla definizione di letterale della stringa binario il cui valore interpretato è uguale al valore di origine. La stringa risultante ha il formato X'hhhh' (dove h è un qualsiasi carattere esadecimale).

Se si specifica una clausola CCSID o ENCODING, l'array di byte si suppone composto da caratteri nella codifica o nel CCSID specificati e viene convertito nel valore di ritorno del carattere.

Se si specifica solo un CCSID, si suppone la codifica big endian.

Se si specifica solo una codifica, si suppone il CCSID 1208.

Questa funzione riporta errori di conversione se la code page o la codifica sono sconosciute, i dati forniti non sono un numero integrale dicaratteri della code page oppure i dati contengono caratteri non validi nella code page indicata.

BLOB INTEGER L'array di byte ha un massimo di 263 elementi ed è convertito in un integer. Viene riportato un errore se la lunghezza dell'origine non è corretta per corrispondere ad un integer.
BOOLEAN BOOLEAN Il risultato è uguale all'input.
BOOLEAN CHARACTER Se il valore di origine è TRUE, il risultato è la stringa di caratteri TRUE. Se il valore di origine è FALSE, il risultato è la stringa di caratteri FALSE. Poiché il valore booleano UNKNOWN è uguale al valore NULL per i booleani, il risultato è NULL se il valore di origine è UNKNOWN.
CHARACTER BIT La stringa di caratteri deve essere conforme alle regole per un letterale della stringa di bit oppure per il contenuto del letterale della stringa di bit. Ossia, la stringa di caratteri può essere del formato B'bbbbbbb' o bbbbbb (dove b' può essere 0 oppure 1).

Se si specifica una clausola CCSID o ENCODING, la stringa di caratteri viene convertita nella codifica e nel CCSID specificati e posizionata senza ulteriori conversioni nel valore di ritorno dell'array di bit.

Se si specifica solo un CCSID, si suppone la codifica big endian.

Se si specifica solo una codifica, si suppone il CCSID 1208.

Questa funzione riporta errori di conversione se la code page o la codifica sono sconosciute o se i dati contengono caratteri Unicode che non possono essere convertiti nella code page indicata.

Inizio modificaCHARACTERFine modifica Inizio modificaBLOBFine modifica Inizio modificaQuesto cast può funzionare in due modi:
  1. Quando si specifica una clausola CCSID oppure una clausola ENCODING, viene trascritta l'intera stringa nella code page o nella codifica richieste. Per esempio, in CCSID 850 la stringa "Cat" diventa il seguente array da tre byte in esadecimali: 43, 61, 74.
  2. Se non viene specificata la clausola CCSID e nemmeno la clausola ENCODING, la stringa deve contenere a sua volta cifre esadecimali a due caratteri, del formato X'hhhhhh' oppure hhhhhh (dove h può essere qualsiasi carattere esadecimale). In tal caso, la stringa di input "436174" diventa lo stesso array binario di tre byte (43,61,74).

    Si tenga presente che viene generato un errore nel caso in cui la stringa di input non sia nel formato corretto.

Se si specifica solo un CCSID, si suppone la codifica big endian.

Se si specifica solo una codifica, si suppone il CCSID 1208.

Questa funzione riporta errori di conversione se la code page o la codifica sono sconosciute o se i dati contengono caratteri Unicode che non possono essere convertiti nella code page indicata.

Fine modifica
CHARACTER BOOLEAN La stringa di caratteri viene interpretata nello stesso modo di un letterale booleano. Ossia, la stringa di caratteri deve essere una delle stringhe TRUE, FALSE o UNKNOWN (in qualsiasi combinazione di lettere maiuscole e minuscole).
CHARACTER CHARACTER Il risultato è uguale all'input.
CHARACTER DATE Se non è specificata una clausola FORMAT, la stringa di caratteri deve essere conforme alle regole per un letterale di data o per la stringa di data. Ossia, la stringa di caratteri può essere DATE '2002-10-05' oppure 2002-10-05.

Vedere anche Formattazione ed analisi di dateTimes come stringhe.

CHARACTER DECIMAL La stringa di caratteri viene interpretata nello stesso modo di un letterale numerico esatto per formare un risultato decimale temporaneo con scale e precision definiti dal formato della stringa. Viene convertita in un decimale con i valori precision e scale specificati, e viene generato un errore runtime se la conversione risulta nella perdita di cifre importanti.

Se non vengono specificati precision e scale, i valori precision e scale del risultato sono il minimo necessario per contenere il valore fornito.

Il funzionamento cambia se viene specificata la clausola FORMAT. Vedere anche Formattazione ed analisi dei numeri come stringhe.

CHARACTER FLOAT La stringa di caratteri viene interpretata nello stesso modo di un letterale a virgola mobile.

Il funzionamento cambia se viene specificata la clausola FORMAT. Vedere anche Formattazione ed analisi dei numeri come stringhe.

CHARACTER GMTTIME La stringa di caratteri deve essere conforme alle regole per un letterale di ora GMT o per la stringa dell'ora. Ossia, la stringa di caratteri può essere GMTTIME '09:24:15' oppure 09:24:15.

Il funzionamento cambia se viene specificata la clausola FORMAT. Vedere anche Formattazione ed analisi di dateTimes come stringhe.

CHARACTER GMTTIMESTAMP La stringa di caratteri deve essere conforme alle regole per un letterale di data/ora GMT o per la stringa data/ora. Ossia, la stringa di caratteri può essere GMTTIMESTAMP '2002-10-05 09:24:15' oppure 2002-10-05 09:24:15.

Il funzionamento cambia se viene specificata la clausola FORMAT. Vedere anche Formattazione ed analisi di dateTimes come stringhe.

CHARACTER INTEGER La stringa di caratteri viene interpretata nello stesso modo di un letterale integer.

Il funzionamento cambia se viene specificata la clausola FORMAT. Vedere anche Formattazione ed analisi dei numeri come stringhe.

CHARACTER INTERVAL La stringa di caratteri deve essere conforme alle regole per un letterale di intervallo con lo stesso interval qualifier specificato nella funzione CAST o deve essere conforme alle regole per una stringa di intervallo applicata per l'interval qualifier specificato.
CHARACTER TIME La stringa di caratteri deve essere conforme alle regole per un letterale di ora o per la stringa dell'ora. Ossia, la stringa di caratteri può essere TIME '09:24:15' oppure 09:24:15.

Il funzionamento cambia se viene specificata la clausola FORMAT. Vedere anche Formattazione ed analisi di dateTimes come stringhe.

CHARACTER TIMESTAMP La stringa di caratteri deve essere conforme alle regole per un letterale di data/ora o per la stringa data/ora. Ossia, la stringa di caratteri può essere TIMESTAMP '2002-10-05 09:24:15' oppure 2002-10-05 09:24:15.

Il funzionamento cambia se viene specificata la clausola FORMAT. Vedere anche Formattazione ed analisi di dateTimes come stringhe.

DATE CHARACTER Il risultato è una stringa conforme alla definizione di letterale della data, il cui valore interpretato è uguale al valore della data di origine.
Ad esempio:
CAST(DATE '2002-10-05' AS CHARACTER)
restituisce
DATE '2002-10-05'

Il funzionamento cambia se viene specificata la clausola FORMAT. Vedere anche Formattazione ed analisi di dateTimes come stringhe.

DATE DATE Il risultato è uguale all'input.
DATE GMTTIMESTAMP Il risultato è un valore i cui campi della data vengono presi dal valore della data di origine ed i cui campi dell'ora vengono presi dall'ora GMT corrente.
DATE TIMESTAMP Il risultato è un valore i cui campi della data vengono presi dal valore della data di origine ed i cui campi dell'ora vengono presi dall'ora corrente.
DECIMAL CHARACTER Il risultato è la stringa di caratteri più breve conforme alla definizione di un letterale numerico esatto ed il cui valore interpretato è il valore del decimale.

Il funzionamento cambia se viene specificata la clausola FORMAT. Vedere anche Formattazione ed analisi dei numeri come stringhe.

DECIMAL DECIMAL

Il valore viene convertito nei valori precision e scale specificati e viene generato un errore runtime se la conversione risulta nella perdita di cifre importanti. Se non vengono specificati precision e scale, i valori precision e scale vengono conservati; si tratta di un NOOP (no operation).

DECIMAL FLOAT Il numero viene convertito, con un arrotondamento, se necessario.
DECIMAL INTEGER

Il valore viene arrotondato e convertito in un integer, e viene generato un errore runtime se la conversione risulta nella perdita di cifre importanti.

DECIMAL INTERVAL Se il valore interval qualifier specificato ha solo un campo, il risultato è un intervallo con quel qualificatore con il campo uguale al valore del numerico esatto. In caso contrario, viene generato un errore runtime.
FLOAT CHARACTER Il risultato è la stringa di caratteri più breve conforme alla definizione di un letterale numerico approssimato e la cui mantissa è formata da una cifra singola che non sia 0, seguita da un punto e da un integer senza segno, il cui valore interpretato è il valore del float.

Il funzionamento cambia se viene specificata la clausola FORMAT. Vedere anche Formattazione ed analisi dei numeri come stringhe.

FLOAT FLOAT Il risultato è uguale all'input.
FLOAT DECIMAL

Il valore viene arrotondato e convertito in un decimale con i valori precision e scale specificati, e viene generato un errore runtime se la conversione risulta nella perdita di cifre importanti. Se non vengono specificati precision e scale, i valori precision e scale del risultato sono il minimo necessario per contenere il valore fornito.

FLOAT INTEGER

Il valore viene arrotondato e convertito in un integer, e viene generato un errore runtime se la conversione risulta nella perdita di cifre importanti.

FLOAT INTERVAL Se il valore interval qualifier specificato ha un solo campo, il risultato è un intervallo con quel qualificatore con il campo uguale al valore del numerico. In caso contrario, viene generato un errore runtime.
GMTTIME CHARACTER Il risultato è una stringa conforme alla definizione di letterale GMTTIME il cui valore interpretato è uguale al valore di origine. La stringa risultante ha il formato GMTTIME 'hh:mm:ss'.

Il funzionamento cambia se viene specificata la clausola FORMAT. Vedere anche Formattazione ed analisi di dateTimes come stringhe.

GMTTIME GMTTIME Il risultato è uguale all'input.
GMTTIME TIME Il valore risultante è il valore di origine più lo spostamento del fuso orario locale (come restituito da LOCAL_TIMEZONE). Il campo relativo alle ore è calcolato in base al formato a 24 ore.
GMTTIME GMTTIMESTAMP Il risultato è un valore i cui campi relativi alla data vengono presi dalla data corrente ed i cui campi relativi all'ora vengono presi dall'ora GMT di origine.
GMTTIME TIMESTAMP Il risultato è un valore i cui campi relativi alla data vengono presi dalla data corrente ed i cui campi relativi all'ora vengono presi dall'ora GMT di origine, più lo spostamento del fuso orario locale (come restituito da LOCAL_TIMEZONE).
GMTTIMESTAMP CHARACTER Il risultato è una stringa conforme alla definizione di un letterale GMTTIMESTAMP il cui valore interpretato è uguale al valore di origine. La stringa risultante ha il formato GMTTIMESTAMP 'aaaa-mm-gg hh:mm:ss'.

Il funzionamento cambia se viene specificata la clausola FORMAT. Vedere anche Formattazione ed analisi di dateTimes come stringhe.

GMTTIMESTAMP DATE Il risultato è un valore i cui campi sono formati dai campi relativi alla data del valore GMTTIMESTAMP di origine.
GMTTIMESTAMP GMTTIME Il risultato è un valore i cui campi sono formati dai campi relativi all'ora del valore GMTTIMESTAMP di origine.
GMTTIMESTAMP TIME Il risultato è un valore i cui campi relativi all'ora vengono presi dal valore GMTTIMESTAMP, più lo spostamento del fuso orario locale (come restituito da LOCAL_TIMEZONE). Il campo relativo alle ore è calcolato in base al formato a 24 ore.
GMTTIMESTAMP GMTTIMESTAMP Il risultato è uguale all'input.
GMTTIMESTAMP TIMESTAMP Il valore risultante è il valore di origine più lo spostamento del fuso orario locale (come restituito da LOCAL_TIMEZONE).
INTEGER BIT L'integer fornito viene convertito in un array di bit con un massimo di 263 elementi.
INTEGER BLOB L'integer fornito viene convertito in un array di byte con un massimo di 263 elementi.
INTEGER CHARACTER Il risultato è la stringa di caratteri più breve conforme alla definizione di un letterale numerico esatto ed il cui valore interpretato è il valore dell'integer.

Il funzionamento cambia se viene specificata la clausola FORMAT. Vedere anche Formattazione ed analisi dei numeri come stringhe.

INTEGER FLOAT Il numero viene convertito, con un arrotondamento, se necessario.
INTEGER INTEGER Il risultato è uguale all'input.
INTEGER DECIMAL

Il valore viene convertito in un decimale con i valori precision e scale specificati, e viene generato un errore runtime se la conversione risulta nella perdita di cifre importanti. Se non vengono specificati precision e scale, i valori precision e scale del risultato sono il minimo necessario per contenere il valore fornito.

INTEGER INTERVAL Se il valore interval qualifier specificato ha solo un campo, il risultato è un intervallo con quel qualificatore con il campo uguale al valore del numerico esatto. In caso contrario, viene generato un errore runtime.
INTERVAL CHARACTER Il risultato è una stringa conforme alla definizione di un letterale INTERVAL, il cui valore interpretato è uguale al valore di intervallo di origine.
Ad esempio:
CAST(INTERVAL '4' YEARS AS CHARACTER)
restituisce
INTERVAL '4' YEARS
INTERVAL DECIMAL

Se il valore dell'intervallo dispone di un qualificatore che ha un solo campo, il risultato è un decimale con i valori precision e scale specificati e viene generato un errore runtime se la conversione risulta nella perdita di cifre importanti. Se l'intervallo dispone di un qualificatore con più campi, come, ad esempio, YEAR TO MONTH, viene generato un errore runtime. Se non vengono specificati precision e scale, i valori precision e scale del risultato sono il minimo necessario per contenere il valore fornito.

INTERVAL FLOAT Se il valore dell'intervallo dispone di un qualificatore con un solo campo, il risultato è un float con tale valore. Se l'intervallo dispone di un qualificatore con più campi, come, ad esempio, YEAR TO MONTH, viene generato un errore runtime.
INTERVAL INTEGER

Se il valore dell'intervallo ha un qualificatore che dispone di un solo campo, il risultato è un integer con tale valore. Se l'intervallo dispone di un qualificatore con più campi, come, ad esempio, YEAR TO MONTH, viene generato un errore runtime.

INTERVAL INTERVAL Il risultato è uguale all'input.

Gli intervalli anno-mese possono essere convertiti solo in intervalli anno-mese e gli intervalli giorno-secondi solo in intervalli giorno-secondi. L'intervallo di origine è convertito in uno scalare in unità del campo meno importante del valore interval qualifier di destinazione. Tale valore viene normalizzato in un intervallo con l'interval qualifier di destinazione. Ad esempio, per convertire un intervallo con il qualificatore MINUTE TO SECOND in un intervallo con il qualificatore DAY TO HOUR, il valore di origine viene convertito in uno scalare in unità di ore e tale valore viene normalizzato in un intervallo con il qualificatore DAY TO HOUR.

TIME CHARACTER Il risultato è una stringa conforme alla definizione di un letterale TIME, il cui valore interpretato è uguale al valore dell'ora di origine.
Ad esempio:
CAST(TIME '09:24:15' AS CHARACTER)
restituisce
TIME '09:24:15'

Il funzionamento cambia se viene specificata la clausola FORMAT. Vedere anche Formattazione ed analisi di dateTimes come stringhe.

TIME GMTTIME Il valore risultante è il valore di origine meno lo spostamento del fuso orario locale (come restituito da LOCAL_TIMEZONE). Il campo relativo alle ore è calcolato in base al formato a 24 ore.
TIME GMTTIMESTAMP Il risultato è un valore i cui campi relativi alla data vengono presi dalla data corrente ed i cui campi relativi all'ora vengono presi dall'ora GMT di origine, meno lo spostamento del fuso orario locale (come restituito da LOCAL_TIMEZONE).
TIME TIME Il risultato è uguale all'input.
TIME TIMESTAMP Il risultato è un valore i cui campi relativi alla data vengono presi dalla data corrente ed i cui campi relativi all'ora vengono presi dal valore dell'ora di origine.
TIMESTAMP CHARACTER Il risultato è una stringa conforme alla definizione di un letterale TIMESTAMP, il cui valore interpretato è uguale al valore della data/ora di origine.
Ad esempio:
CAST(TIMESTAMP '2002-10-05 09:24:15' AS CHARACTER)
restituisce
TIMESTAMP '2002-10-05 09:24:15'

Il funzionamento cambia se viene specificata la clausola FORMAT. Vedere anche Formattazione ed analisi di dateTimes come stringhe.

TIMESTAMP DATE Il risultato è un valore i cui campi sono formati dai campi relativi alla data del valore data/ora di origine.
TIMESTAMP GMTTIME Il risultato è un valore i cui campi relativi all'ora vengono presi dal valore TIMESTAMP di origine, meno lo spostamento del fuso orario locale (come restituito da LOCAL_TIMEZONE). Il campo relativo alle ore è calcolato in base al formato a 24 ore.
TIMESTAMP GMTTIMESTAMP Il valore risultante è il valore di origine meno lo spostamento del fuso orario locale (come restituito da LOCAL_TIMEZONE).
TIMESTAMP TIME Il risultato è un valore i cui campi sono formati dai campi relativi all'ora del valore data/ora di origine.
TIMESTAMP TIMESTAMP Il risultato è uguale all'input.
Tabella 2. Assegnazioni supportate: associazioni più a uno di tipi di dati di origine e destinazione
Tipo di dati di origine Tipo di dati di destinazione Effetto
Numerico, Numerico, Numerico DATE Crea un valore DATE dai valori numerici nell'ordine anno, mese e giorno. I valori non interi vengono arrotondati.
Numerico, Numerico, Numerico TIME Crea un valore TIME dai valori numerici nell'ordine ore, minuti e secondi. I valori non interi relativi alle ore ed ai minuti vengono arrotondati.
Numerico, Numerico, Numerico GMTIME Crea un valore GMTTIME dai valori numerici nell'ordine di ore, minuti e secondi. I valori non interi relativi alle ore ed ai minuti vengono arrotondati.
Numerico, Numerico, Numerico, Numerico, Numerico, Numerico TIMESTAMP Crea un valore TIMESTAMP dai valori numerici nell'ordine anni, mesi, giorni, ore, minuti e secondi. I valori non interi relativi ad anni, mesi, giorni, ore e minuti vengono arrotondati.
Numerico, Numerico, Numerico, Numerico, Numerico, Numerico GMTTIMESTAMP Crea un valore GMTIMESTAMP dai valori numerici nell'ordine anni, mesi, giorni, ore, minuti e secondi. I valori non interi relativi ad anni, mesi, giorni, ore e minuti vengono arrotondati.
DATE, TIME TIMESTAMP Il risultato è un valore TIMESTAMP con i valori DATE e TIME forniti.
DATE, GMTTIME GMTIMESTAMP Il risultato è un valore GMTTIMESTAMP con i valori DATE e GMTTIME forniti.
Numerico, Numerico INTERVAL YEAR TO MONTH Il risultato è un INTERVAL con la prima origine come anni e la seconda come mesi. I valori non interi vengono arrotondati.
Numerico, Numerico INTERVAL HOUR TO MINUTE Il risultato è un INTERVAL con la prima origine come ore e la seconda come minuti. I valori non interi vengono arrotondati.
Numerico, Numerico, Numerico INTERVAL HOUR TO SECOND Il risultato è un INTERVAL con le origini come ore, minuti e secondi, rispettivamente. I valori non interi relativi alle ore ed ai minuti vengono arrotondati.
Numerico, Numerico INTERVAL MINUTE TO SECOND Il risultato è un INTERVAL con le origini rispettivamente come minuti e secondi. I valori non interi relativi ai minuti vengono arrotondati.
Numerico, Numerico INTERVAL DAY TO HOUR Il risultato è un INTERVAL con le origini rispettivamente come giorni ed ore. I valori non interi vengono arrotondati.
Numerico, Numerico, Numerico INTERVAL DAY TO MINUTE Il risultato è un INTERVAL con le origini rispettivamente come giorni, ore e minuti. I valori non interi vengono arrotondati.
Numerico, Numerico, Numerico, Numerico INTERVAL DAY TO SECOND Il risultato è un INTERVAL con le origini rispettivamente come giorni, ore, minuti e secondi. I valori non interi relativi a giorni, ore e minuti vengono arrotondati.
Numerico INTERVAL YEAR Il risultato è un INTERVAL con l'origine come anni, arrotondato se necessario.
Numerico INTERVAL MONTH Il risultato è un INTERVAL con l'origine come mesi, arrotondato se necessario.
Numerico INTERVAL DAY Il risultato è un INTERVAL con l'origine come giorni, arrotondato se necessario.
Numerico INTERVAL HOUR Il risultato è un INTERVAL con l'origine come ore, arrotondato se necessario.
Numerico INTERVAL MINUTE Il risultato è un INTERVAL con l'origine come minuti, arrotondato se necessario.
Numerico INTERVAL SECOND Il risultato è un INTERVAL con l'origine come secondi.
Concetti correlati
Panoramica di ESQL
Tipi di dati ESQL
Attività correlate
Sviluppo di ESQL
Riferimenti correlati
Funzioni ESQL complesse
Funzione CAST
Assegnazioni implicite
Tipi di dati di valori da origini esterne
Code page supportate
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ak05680_