

 Amazon Redshift non supporterà più la creazione di nuovi Python UDFs a partire dalla Patch 198. Python esistente UDFs continuerà a funzionare fino al 30 giugno 2026. Per ulteriori informazioni, consulta il [post del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Funzione TRY\_CAST
<a name="r_TRY_CAST"></a>

Rispetto alla funzione CAST, TRY\_CAST tenta innanzitutto di eseguire il cast dell’espressione per il tipo specificato. Se il cast non riesce a causa di errori di conversione, l’operazione restituisce null. Se una conversione non è esplicitamente consentita, l’operazione restituisce un errore. Puoi trovare l’elenco delle possibili conversioni nelle note per l’utilizzo riportate di seguito. Ad esempio, il tentativo di convertire un booleano in un timestamp non è consentito. 

## Sintassi
<a name="r_TRY_CAST-syntax"></a>

```
TRY_CAST(expression AS type)
```

## Arguments (Argomenti)
<a name="r_TRY_CAST-arguments"></a>

 *espressione*   
Un'espressione che valuta uno o più valori, ad esempio un nome di colonna o un letterale. La conversione di valori null restituisce null. L'espressione non può contenere stringhe o spazi vuoti. 

 *tipo*   
 Uno dei tipi di dati supportati. Per l’elenco completo dei tipi di dati, consulta [Tipi di dati](c_Supported_data_types.md). Per l’elenco delle coppie di tipi di dati di origine e tipi di dati di destinazione supportate, consulta le note per l’utilizzo riportate di seguito. 

## Tipo restituito
<a name="r_TRY_CAST-return-type"></a>

TRY\_CAST restituisce un valore per il tipo di dati specificato dall’argomento *type*. Se la conversione non riesce, l’operazione restituisce null. 

## Note per l’utilizzo
<a name="r_TRY_CAST-usage-notes"></a>

Di seguito è riportato l’elenco delle coppie di tipi di dati di origine e tipi di dati di destinazione supportate da Amazon Redshift per TRY\_CAST.

 * BOOL *   
 SMALLINT, INT, BIGINT, SUPER 

 * SMALLINT *   
 BOOL, INT, BIGINT, DECIMAL, REAL, FLOAT, BPCHAR, TEXT, VARCHAR, SUPER 

 * INT *   
 BOOL, SMALLINT, BIGINT, DECIMAL, REAL, FLOAT, BPCHAR, TEXT, VARCHAR, SUPER 

 * BIGINT *   
 BOOL, SMALLINT, INT, DECIMAL, REAL, FLOAT, BPCHAR, TEXT, VARCHAR, SUPER 

 * DECIMAL *   
 SMALLINT, INT, BIGINT, REAL, FLOAT, BPCHAR, TEXT, VARCHAR, SUPER 

 * REAL *   
 SMALLINT, INT, BIGINT, DECIMAL, FLOAT, BPCHAR, TEXT, VARCHAR, SUPER 

 * FLOAT *   
 SMALLINT, INT, BIGINT, DECIMAL, REAL, BPCHAR, TEXT, VARCHAR, SUPER 

 * BPCHAR *   
 SMALLINT, INT, BIGINT, DECIMAL, REAL, FLOAT, TEXT, VARCHAR, TIMESTAMP, TIMESTAMPTZ, DATE, TIME, TIMETZ, SUPER 

 * TEXT *   
 SMALLINT, INT, BIGINT, DECIMAL, REAL, FLOAT, BPCHAR, VARCHAR, TIMESTAMP, TIMESTAMPTZ, DATE, TIME, TIMETZ, SUPER 

 * VARCHAR *   
 SMALLINT, INT, BIGINT, DECIMAL, REAL, FLOAT, BPCHAR, TEXT, TIMESTAMP, TIMESTAMPTZ, DATE, TIME, TIMETZ, SUPER 

 *TIMESTAMP*   
 BPCHAR, TEXT, VARCHAR, TIMESTAMPTZ, DATE, TIME 

 * TIMESTAMPTZ *   
 BPCHAR, TEXT, VARCHAR, TIMESTAMP, DATE, TIME, TIMETZ 

 * DATE *   
 BPCHAR, TEXT, VARCHAR, TIMESTAMP, TIMESTAMPTZ 

 * TIME *   
 BPCHAR, TEXT, VARCHAR 

 * TIMETZ *   
 BPCHAR, TEXT, VARCHAR 

 * SUPER *   
 SUPER può essere convertito in qualsiasi altro tipo di dati, a eccezione di DATE, TIME, TIMETZ, TIMESTAMP e TIMESTAMPTZ. 

## Esempi
<a name="r_TRY_CAST-examples"></a>

L’esempio seguente esegue il cast di una STRINGA in un NUMERO INTERO.

```
SELECT TRY_CAST('123' AS INT);

int
----
123
```

Il seguente esempio restituisce null. La conversione di una STRINGA in un NUMERO INTERO è consentita, quindi TRY\_CAST non restituisce un errore. Tuttavia 'foo' non è un numero intero, quindi la funzione restituisce null.

```
SELECT TRY_CAST('foo' AS INT)
```

L’esempio seguente restituisce un errore perché la conversione di un BOOLEANO in un TIMESTAMP non è consentita.

```
SELECT TRY_CAST(true as timestamp);
```

Poiché TRY\_CAST restituisce null anziché restituire immediatamente un errore in caso di mancata conversione, puoi utilizzare TRY\_CAST per filtrare i dati non validi. Considera l’esempio seguente, in cui una riga non valida viene filtrata a causa di un errore di conversione nella colonna dell’età per Akua Mansa.

```
CREATE TABLE IF NOT EXISTS student_data(
name VARCHAR(100) NOT NULL,
age VARCHAR(3) NOT NULL,
enrollment_date DATE NOT NULL);

INSERT INTO student_data (name, age, enrollment_date)
VALUES
('Alejandro Rosalez', '10', '01/01/2000'),
('Akua Mansa', 'Ten', '01/01/2000');

SELECT * FROM student_data WHERE TRY_CAST(age AS INT) IS NOT NULL;

--Akua is not returned.
 name              | age | enrollment_date
-------------------+-----+-----------------
 Alejandro Rosalez | 10  | 01/01/2000
```