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.
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. |
![]() ![]() |
![]() ![]() |
![]()
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. ![]() |
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. |
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. |