

 O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a [publicação de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Função TRY\$1CAST
<a name="r_TRY_CAST"></a>

Em comparação com a função CAST, TRY\$1CAST primeiro tenta converter a expressão no tipo especificado. Se a conversão falhar devido a erros, a operação exibirá null. Se uma conversão não for explicitamente permitida, a operação exibirá um erro. É possível encontrar a lista de conversões possíveis nas notas de uso abaixo. Por exemplo, tentar converter um booliano em um carimbo de data/hora não é permitido. 

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

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

## Argumentos
<a name="r_TRY_CAST-arguments"></a>

 *expressão*   
Uma expressão que avalia para um ou mais valores, tal como um nome de coluna ou um literal. A conversão de valores nulos retorna nulos. A expressão não pode conter strings em branco ou vazias. 

 *type*   
 Um dos tipos de dados aceitos. Para ver uma lista completa de tipos de recurso, consulte [Tipos de dados](c_Supported_data_types.md). Para ver a lista de pares de tipos de dados de origem e de destino aceitos, consulte as observações de uso abaixo. 

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

TRY\$1CAST exibe um valor do tipo de dados especificado pelo argumento *type*. Se a conversão falhar, a operação exibirá null. 

## Observações de uso
<a name="r_TRY_CAST-usage-notes"></a>

Veja a lista de pares de tipos de dados de origem e de destino aceitos no Amazon Redshift para TRY\$1CAST.

 * 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 pode ser convertido em qualquer outro tipo de dados, com exceção de DATE, TIME, TIMETZ, TIMESTAMP e TIMESTAMPTZ. 

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

O exemplo a seguir converte STRING em um INTEGER.

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

int
----
123
```

O exemplo a seguir exibe null. A conversão de STRING em INTEGER é permitida para que TRY\$1CAST não exiba um erro, mas “foo” não é um número inteiro, então a função exibe null.

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

O exemplo a seguir exibe um erro, pois a conversão de BOOLEAN em TIMESTAMP não é permitida.

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

Como TRY\$1CAST exibirá nulo em vez de exibir imediatamente um erro se a conversão falhar, é possível usar TRY\$1CAST para filtrar dados inválidos. Pense no exemplo a seguir, em que uma linha inválida é filtrada devido a uma falha de conversão na coluna de idade para 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
```