Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Função TRY_CAST

Modo de foco
Função TRY_CAST - Amazon Redshift

Em comparação com a função CAST, TRY_CAST 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

TRY_CAST(expression AS type)

Argumentos

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.

tipo

Um dos tipos de dados aceitos. Para ver uma lista completa de tipos de recurso, consulte Tipos de dados. 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

TRY_CAST 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

Veja a lista de pares de tipos de dados de origem e de destino aceitos no Amazon Redshift para 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 pode ser convertido em qualquer outro tipo de dados, com exceção de DATE, TIME, TIMETZ, TIMESTAMP e TIMESTAMPTZ.

Exemplos

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_CAST 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_CAST exibirá nulo em vez de exibir imediatamente um erro se a conversão falhar, é possível usar TRY_CAST 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
PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.