Ao trabalhar com dados em SQL, você pode precisar converter valores entre diferentes tipos de dados. A função SQL CAST é uma ferramenta conveniente para realizar essas conversões de tipos de dados de forma fácil e clara. Este artigo fornece uma explicação detalhada de como usar a função CAST, incluindo uso básico, exemplos específicos de conversão, exemplos avançados e métodos de tratamento de erros. Aprimore seu conhecimento sobre conversão de tipos de dados em SQL e busque criar consultas mais avançadas.
Sintaxe Básica da Função CAST
A função CAST é uma função SQL padrão para converter tipos de dados. A sintaxe básica é a seguinte:
CAST(expression AS target_data_type)
Aqui, expression
é o valor ou coluna a ser convertida, e target_data_type
é o tipo de dado de destino. Por exemplo, para converter uma string para um inteiro, você pode usar a seguinte consulta:
SELECT CAST('123' AS INT);
Esta consulta converte a string '123'
em um inteiro e retorna o valor numérico 123
.
Exemplos de Conversão de Tipos de Dados
Aqui estão alguns exemplos típicos de conversões de tipos de dados usando a função CAST.
Convertendo String para Inteiro
Exemplo de conversão de dados do tipo string para o tipo inteiro.
SELECT CAST('456' AS INT) AS ConvertedValue;
Esta consulta converte a string '456'
para o inteiro 456
.
Convertendo Inteiro para String
Exemplo de conversão de dados do tipo inteiro para o tipo string.
SELECT CAST(789 AS VARCHAR(10)) AS ConvertedValue;
Esta consulta converte o inteiro 789
para a string '789'
.
Convertendo String para Data
Exemplo de conversão de dados do tipo string para o tipo data.
SELECT CAST('2024-05-24' AS DATE) AS ConvertedValue;
Esta consulta converte a string '2024-05-24'
para a data 2024-05-24
.
Convertendo Ponto Flutuante para Inteiro
Exemplo de conversão de dados do tipo ponto flutuante para o tipo inteiro.
SELECT CAST(123.456 AS INT) AS ConvertedValue;
Esta consulta converte o número de ponto flutuante 123.456
para o inteiro 123
.
Diferenças Entre as Funções CAST e CONVERT
O SQL também possui a função CONVERT, que é semelhante à função CAST, mas existem algumas diferenças entre as duas.
Diferenças Básicas
A função CAST está em conformidade com o padrão ANSI SQL e é suportada pela maioria dos bancos de dados. Em contraste, a função CONVERT é uma extensão usada principalmente no Microsoft SQL Server e oferece opções de formatação específicas.
Diferenças de Sintaxe
Sintaxe da função CAST:
CAST(expression AS target_data_type)
Sintaxe da função CONVERT:
CONVERT(target_data_type, expression [, style])
A função CONVERT possui uma opção style
que permite converter datas ou strings em formatos específicos.
Exemplos de Uso
Exemplo da função CAST:
SELECT CAST('123' AS INT) AS ConvertedValue;
Exemplo da função CONVERT:
SELECT CONVERT(INT, '123') AS ConvertedValue;
Exemplo da função CONVERT usando a opção de formato:
SELECT CONVERT(VARCHAR, GETDATE(), 101) AS USFormattedDate;
Esta consulta converte a data atual para uma string no formato MM/DD/YYYY
.
Exemplos Avançados Usando a Função CAST
A função CAST pode ser usada em vários cenários avançados além da conversão básica de tipos de dados. Aqui estão alguns exemplos práticos.
Concatenando Números como Strings
Exemplo de conversão de um número para uma string e sua concatenação com outra string.
SELECT 'Order Number: ' + CAST(OrderID AS VARCHAR) AS OrderDescription
FROM Orders;
Esta consulta converte o OrderID
para uma string e o concatena com a string Order Number:
.
Forçando Consistência de Tipo de Dados
Exemplo de garantia de consistência de tipo de dados ao usar colunas de diferentes tipos de dados juntas.
SELECT CAST(SalesAmount AS DECIMAL(10, 2)) AS FormattedSalesAmount
FROM Sales;
Esta consulta converte a coluna SalesAmount
para o tipo DECIMAL com 2 casas decimais.
Comparando Datas e Strings
Exemplo de conversão de uma data para o tipo string para comparação.
SELECT *
FROM Events
WHERE CAST(EventDate AS VARCHAR) = '2024-05-24';
Esta consulta converte a coluna EventDate
para uma string e procura linhas que correspondam à data especificada como string.
Conversão Condicional de Tipo de Dados
Exemplo de uso da instrução CASE para realizar conversão condicional de tipos de dados.
SELECT
CASE
WHEN IsNumeric(Value) = 1 THEN CAST(Value AS INT)
ELSE NULL
END AS ConvertedValue
FROM SampleTable;
Esta consulta converte a coluna Value
para inteiro apenas se o valor for numérico.
Tratamento de Erros Usando a Função CAST
Erros podem ocorrer durante a conversão de tipos de dados. Aqui estão alguns métodos de tratamento de erros a considerar ao usar a função CAST.
Usando a Função TRY_CAST
No SQL Server, você pode usar a função TRY_CAST para evitar erros de conversão. TRY_CAST retorna NULL se a conversão falhar.
SELECT TRY_CAST('abc' AS INT) AS SafeConversion;
Esta consulta retorna NULL
porque a conversão da string 'abc'
para inteiro falha.
Tratamento de Erros com Instruções CASE
Exemplo de combinação da instrução CASE com tratamento de erros baseado em condições.
SELECT
CASE
WHEN ISNUMERIC(Value) = 1 THEN CAST(Value AS INT)
ELSE NULL
END AS SafeConversion
FROM SampleTable;
Esta consulta retorna NULL se o Value
não for numérico.
Usando a Função TRY_PARSE
TRY_PARSE é útil para converter strings em datas ou números. TRY_PARSE também retorna NULL se a conversão falhar.
SELECT TRY_PARSE('2024-05-24' AS DATE USING 'en-US') AS SafeDateConversion;
Esta consulta converte a string '2024-05-24'
para o tipo data e retorna NULL
se a conversão falhar.
Consulta de Exemplo para Tratamento de Erros
Aqui está um exemplo de tratamento de erros usando TRY_CAST.
SELECT
Name,
TRY_CAST(Age AS INT) AS SafeAge
FROM Users;
Esta consulta evita erros retornando NULL se os valores na coluna Age
não puderem ser convertidos para inteiros.
Conclusão
A função CAST é uma ferramenta poderosa e flexível para conversão de tipos de dados em SQL. Compreender sua sintaxe básica e experimentar vários exemplos de conversão de tipos de dados ajudará você a desenvolver habilidades para criar consultas mais complexas. Além disso, conhecer as diferenças e o uso de outras funções de conversão como CONVERT e TRY_CAST é importante. Um tratamento adequado de erros garante a criação de consultas SQL confiáveis. Domine o uso da função CAST para realizar operações de banco de dados com mais eficiência.