Specifica CAST
La specifica CAST restituisce l'operando del cast (il primo operando) nel cast al tipo specificato dal tipo di dati. Se il cast non è supportato, viene restituito un errore (SQLSTATE 42846).
- 1 For compatibility purposes, you can use
::as the type cast operator. For example, the statementsC1::INTEGERandcast(C1 as INTEGER)are equivalent. - 2 The SCOPE clause only applies to the REF data type.
- 3 The FOR BIT DATA clause can be specified in any order with the other column constraints that follow. The FOR BIT DATA clause cannot be specified with string units CODEUNITS32 (SQLSTATE 42613).
- espressione
- Se l'operando del cast è un'espressione (diversa dal contrassegno dei parametri o NULL), il risultato è il valore dell'argomento convertito nella destinazione specificata tipo dati.
Quando si verificano stringhe di carattere di casting (diverse da CLOBs) ad una stringa di carattere con una lunghezza diversa, viene restituito un avviso (SQLSTATE 01004) se si verifica il troncamento di altri vuoti di trailing. Quando si presentano stringhe di carattere grafico (diverse da DBCLOBs) ad una stringa di carattere grafico con una lunghezza diversa, viene restituito un avviso (SQLSTATE 01004) se si verifica il troncamento di diverso da quello di trailing. Per gli operandi di cast BLOB, CLOB e DBCLOB, l'avviso viene emesso se eventuali caratteri vengono troncati.
Durante il casting di una matrice, il tipo di dati di destinazione deve essere un tipo di dati array definito dall'utente (SQLSTATE 42821). Il tipo di dati degli elementi dell'array deve essere lo stesso del tipo di dati degli elementi del tipo di dati array di destinazione (SQLSTATE 42846). La cardinalità dell'array deve essere inferiore o uguale alla massima cardinalità del tipo di dati array di destinazione (SQLSTATE 2202F).
- NULL
- Se l'operando del cast è la parola chiave NULL, il risultato è un valore nullo che ha il tipo di datispecificato. parametro - marker
- Un indicatore di parametro è normalmente considerato un'espressione, ma è documentato separatamente in questo caso perché ha un significato particolare. Se l'operando del cast è un parametro - marker, il tipo di dati specificato è considerato una promessa che la sostituzione sarà assegnabile al tipo di dati specificato (utilizzando l'assegnazione di negozio per le stringhe). Tale marker di parametro è considerato un marker di parametro digitato. I marcatori dei parametri digitati saranno trattati come qualsiasi altro valore digitato ai fini della risoluzione delle funzioni, DESCRIVERE di un elenco di selezione o per l'assegnazione di colonne. cursore - specifica - cast
- Una specifica di cast utilizzata per indicare che un indicatore di parametro dovrebbe essere un tipo di cursore. Può essere utilizzato ovunque un'espressione sia supportata in contesti che consentono i tipi di cursore.
- parametro - marker
- L'operando cast è un indicatore di parametro ed è considerato una promessa che la sostituzione sarà assegnabile al tipo di cursore specificato. CURSORE
- Specifica il tipo di dati integrato CURSOR. nome - tipo - cursore
- Specifica il nome di un tipo di cursore definito dall'utente.
riga - cast - specifica - Una specifica di cast dove l'input è un valore di riga e il risultato è un tipo di riga definito dall'utente. Un riga - cast - specifica è valido solo dove è consentito un riga - espressione .
- riga - espressione
- Il tipo di dati di riga - espressione deve essere una variabile di tipo di riga ancorata alla definizione di una tabella o di una vista. Il tipo di dati di riga - espressione non deve essere un tipo di riga definito dall'utente (SQLSTATE 42846). NULL
- Specifica che l'operando del cast è il valore nullo. Il risultato è una riga con il valore nullo per ogni campo del tipo di dati specificato. parametro - marker
- L'operando del cast è un indicatore di parametro ed è considerato una promessa che la sostituzione sarà assegnabile al specificato nome - tipo - riga. Nome - tipo - nome
- Specifica il nome di un tipo di riga definito dall'utente. L' riga - espressione deve essere castabile in nome - tipo - nome (SQLSTATE 42846).
Intervallo - cast - specifica - Una specifica di cast dove l'input è una rappresentazione di stringa di carattere di un intervallo e il risultato è una durata decimale. Le seguenti istruzioni sono equivalenti:
Per ulteriori informazioni sui possibili valori stringa - costante, consultare Funzione scalare INTERVAL.CAST (string-constant as INTERVAL) INTERVAL string-constanttipo di dati - Il nome di un tipo di dati esistente. Se il nome tipo non è qualificato, il percorso SQL viene utilizzato per eseguire la risoluzione del tipo di dati. Un tipo di dati che ha attributi associati, come la lunghezza o la precisione e la scala, dovrebbe includere questi attributi quando si specifica tipo - dati.
- I default di CHAR su una lunghezza di 1
- BINARY default su una lunghezza di 1
- DECIMALE default su una precisione di 5 e una scala di 0
- DECFLOAT viene impostata per default su una precisione di 34 se non specificato
- Per un operando cast che sia una espressione, i tipi di dati di destinazione supportati dipendono dal tipo di dati dell'operando in cast (tipo di dati di origine). Se l'attributo lunghezza non è specificato per un tipo di dati VARCHAR, VARGRAPHIC, NVARCHAR o VARBINARY, l'attributo di lunghezza viene determinato in base al tipo di dati del primo argomento che utilizza le regole della funzione cast incorporata corrispondente quando specificato senza alcun argomento di lunghezza.
- Per un operando cast che sia la parola chiave NULL, può essere utilizzato qualsiasi tipo di dati esistente. Se l'attributo lunghezza non è specificato per un tipo di dati VARCHAR, VARGRAPHIC, NVARCHAR o VARBINARI, viene utilizzato un attributo di lunghezza di 1.
- Per un operando cast che sia un indicatore di parametro, il tipo di dati di destinazione può essere qualsiasi tipo di dato esistente. Se il tipo di dati è un tipo distinto definito dall'utente, l'applicazione che utilizza il marker del parametro utilizzerà il tipo di dati di origine del tipo distinto definito dall'utente. Se il tipo di dati è un tipo strutturato definito dall'utente, l'applicazione che utilizza il marker del parametro utilizzerà il tipo di parametro di input della funzione di trasformazione TO SQL per il tipo strutturato definito dall'utente. Se l'attributo lunghezza non è specificato per un tipo di dati VARCHAR, VARGRAPHIC, NVARCHAR o VARBINARI, viene utilizzato un attributo di lunghezza di 254.
- costruito - in - tipo
- Consultare "CREATE TABLE" per la descrizione dei tipi di dati integrati.
- AMBITO
- Quando il tipo di dati è un tipo di riferimento, può essere definito un ambito che identifica la tabella di destinazione o la vista di destinazione del riferimento.
- typed - table - name
- Il nome di una tabella digitata. La tabella deve già esistere (SQLSTATE 42704). Il cast deve essere a tipo di dati REF (S), dove S è il tipo di nome - tabella - nome (SQLSTATE 428DM). Nome - vista - nome
- Il nome di una vista digitata. La vista deve esistere o avere lo stesso nome della vista creata che include il cast come parte della definizione della vista (SQLSTATE 42704). Il cast deve essere a tipo di dati REF (S), dove S è il tipo di nome - vista - nome (SQLSTATE 428DM).
Quando i dati numerici vengono gettati ai dati di carattere, il tipo di dati di risultato è una stringa di caratteri a lunghezza fissa. Quando i dati dei caratteri vengono espressi in dati numerici, il tipo di dati di risultato dipende dal tipo di numero specificato. Ad esempio, se cast a intero, diventa un intero intero.
Esempi
- Un'applicazione è interessata solo alla porzione intera di SALARY (definita come decimale (9, 2)) dalla tabella EMPLOYEE. Si potrebbe preparare la seguente query, incluso il numero di dipendenti e il valore intero di SALARY.
SELECT EMPNO, CAST(SALARY AS INTEGER) FROM EMPLOYEE - Supponi l'esistenza di un tipo distinto chiamato T_AGE definito su SMALLINT e utilizzato per creare la colonna AGE nella tabella PERSONALE. Ipotizza inoltre l'esistenza di un tipo distinto chiamato R_YEAR definito su INTEGER e utilizzato per creare colonna RETIRE_YEAR nella tabella PERSONALE. Potrebbe essere preparata la seguente istruzione di aggiornamento.
UPDATE PERSONNEL SET RETIRE_YEAR =? WHERE AGE = CAST( ? AS T_AGE)Il primo parametro è un indicatore di parametro untyped che avrebbe un tipo di dati R_YEAR, sebbene l'applicazione utilizzerà un numero intero per questo marker di parametro. Questo non richiede la specifica CAST esplicita perché è un incarico.
Il contrassegno del secondo parametro è un indicatore di parametro digitato che viene cast come un tipo distinto T_AGE. Questo soddisfa il requisito che il confronto deve essere eseguito con tipi di dati compatibili. L'applicazione utilizzerà il tipo di dati di origine (che è SMALLINT) per l'elaborazione di questo marker di parametro.
L'elaborazione riuscita di questa istruzione presuppone che il percorso SQL includa il nome schema dello schema (o schemi) dove vengono definiti i due tipi distinti.
- Un'applicazione fornisce un valore che è una serie di bit, ad esempio un flusso audio e non deve sottoporsi alla conversione della code page prima di essere utilizzato in un'istruzione SQL. L'applicazione potrebbe utilizzare il seguente CAST:
CAST( ? AS VARCHAR(10000) FOR BIT DATA) - Ipotizza che un tipo di matrice e una tabella siano stati creati come segue:
La seguente procedura restituisce un array con i numeri di telefono per il dipendente con ID 1775. Se ci sono più di cinque numeri telefonici per questo impiegato, viene restituito un errore (SQLSTATE 2202F).CREATE TYPE PHONELIST AS DECIMAL(10, 0) ARRAY[5] CREATE TABLE EMP_PHONES (ID INTEGER, PHONENUMBER DECIMAL(10,0) )CREATE PROCEDURE GET_PHONES(OUT EPHONES PHONELIST) BEGIN SELECT CAST(ARRAY_AGG(PHONENUMBER) AS PHONELIST) INTO EPHONES FROM EMP_PHONES WHERE ID = 1775; END
