Ao trabalhar com dados em SQL, pode ser necessário converter strings em números. Por exemplo, se a entrada do usuário ou dados importados forem armazenados no formato string, eles precisam ser convertidos para serem processados como números. Este artigo fornece explicações detalhadas com exemplos específicos sobre como converter strings em números nos bancos de dados MySQL, PostgreSQL, SQL Server e Oracle.
Métodos de Conversão no MySQL
No MySQL, é comum usar as funções CAST
ou CONVERT
para converter strings em números. Aqui estão exemplos específicos.
Usando a Função CAST
O método para converter strings em números usando a função CAST
é o seguinte:
SELECT CAST('1234' AS UNSIGNED);
Essa consulta converte a string ‘1234’ em um número inteiro. Alterando UNSIGNED
para SIGNED
ou DECIMAL
, você pode converter para diferentes tipos numéricos.
Usando a Função CONVERT
Você também pode usar a função CONVERT
para converter strings em números.
SELECT CONVERT('1234', UNSIGNED);
Essa consulta também converte a string ‘1234’ em um número inteiro. Você pode mudar UNSIGNED
para outros tipos numéricos conforme necessário.
Exemplo Prático
Por exemplo, para lidar com dados de idade armazenados como strings na tabela users
:
SELECT user_id, CAST(age AS UNSIGNED) AS numeric_age FROM users;
Essa consulta recupera o user_id
e a age
convertida para um número como numeric_age
da tabela users
.
Métodos de Conversão no PostgreSQL
No PostgreSQL, é comum usar a função CAST
ou o operador ::
para converter strings em números. Aqui estão exemplos específicos.
Usando a Função CAST
O método para converter strings em números usando a função CAST
é o seguinte:
SELECT CAST('1234' AS INTEGER);
Essa consulta converte a string ‘1234’ em um número inteiro. Alterando INTEGER
para NUMERIC
ou FLOAT
, você pode converter para diferentes tipos numéricos.
Usando o Operador ::
Você também pode usar o operador ::
para converter strings em números.
SELECT '1234'::INTEGER;
Essa consulta também converte a string ‘1234’ em um número inteiro. Você pode mudar INTEGER
para outros tipos numéricos conforme necessário.
Exemplo Prático
Por exemplo, para lidar com dados de valor armazenados como strings na tabela orders
:
SELECT order_id, CAST(amount AS NUMERIC) AS numeric_amount FROM orders;
Essa consulta recupera o order_id
e o amount
convertido para um número como numeric_amount
da tabela orders
.
Métodos de Conversão no SQL Server
No SQL Server, é comum usar as funções CAST
ou CONVERT
para converter strings em números. Aqui estão exemplos específicos.
Usando a Função CAST
O método para converter strings em números usando a função CAST
é o seguinte:
SELECT CAST('1234' AS INT);
Essa consulta converte a string ‘1234’ em um número inteiro. Alterando INT
para DECIMAL
ou FLOAT
, você pode converter para diferentes tipos numéricos.
Usando a Função CONVERT
Você também pode usar a função CONVERT
para converter strings em números.
SELECT CONVERT(INT, '1234');
Essa consulta também converte a string ‘1234’ em um número inteiro. Você pode mudar o primeiro argumento para outros tipos numéricos conforme necessário.
Exemplo Prático
Por exemplo, para lidar com dados de vendas armazenados como strings na tabela sales
:
SELECT sale_id, CAST(sale_amount AS DECIMAL(10, 2)) AS numeric_sale_amount FROM sales;
Essa consulta recupera o sale_id
e o sale_amount
convertido para um número como numeric_sale_amount
da tabela sales
.
Métodos de Conversão no Oracle
No Oracle, é comum usar a função TO_NUMBER
para converter strings em números. Aqui estão exemplos específicos.
Usando a Função TO_NUMBER
O método para converter strings em números usando a função TO_NUMBER
é o seguinte:
SELECT TO_NUMBER('1234') FROM dual;
Essa consulta converte a string ‘1234’ em um número. Você também pode especificar um modelo de formato com a função TO_NUMBER
.
Usando um Modelo de Formato
Você pode especificar um modelo de formato com a função TO_NUMBER
para converter strings em números.
SELECT TO_NUMBER('1,234.56', '9,999.99') FROM dual;
Essa consulta converte a string ‘1,234.56’, que inclui uma vírgula e um ponto decimal, em um número.
Exemplo Prático
Por exemplo, para lidar com dados de salário armazenados como strings na tabela employees
:
SELECT employee_id, TO_NUMBER(salary) AS numeric_salary FROM employees;
Essa consulta recupera o employee_id
e o salary
convertido para um número como numeric_salary
da tabela employees
.
Tratamento de Erros e Considerações
Vários erros podem ocorrer ao converter strings em números. Aqui, explicamos os erros comuns e como evitá-los.
Formato de String Inválido
Se uma string inválida estiver incluída, a conversão falhará. Por exemplo, se caracteres alfabéticos ou especiais estiverem incluídos no número, a conversão falhará. Nesses casos, é necessário limpar os dados antes da conversão.
SELECT CASE
WHEN ISNUMERIC(column_name) = 1 THEN CAST(column_name AS INT)
ELSE NULL
END AS numeric_column
FROM table_name;
Essa consulta usa a função ISNUMERIC
no SQL Server para converter apenas as strings que podem ser convertidas em números.
Tratamento de Valores NULL
Se a string for NULL, o resultado da conversão também será NULL. Se os valores NULL forem problemáticos, são necessárias medidas como definir valores padrão.
SELECT COALESCE(CAST(column_name AS INT), 0) AS numeric_column
FROM table_name;
Essa consulta define o valor padrão como 0 se os valores NULL estiverem incluídos.
Erros de Truncamento
Se a string a ser convertida exceder o intervalo do tipo numérico alvo, ocorrerá um erro de truncamento. É importante verificar o comprimento ou valor da string previamente.
SELECT CASE
WHEN LENGTH(column_name) <= 10 THEN TO_NUMBER(column_name)
ELSE NULL
END AS numeric_column
FROM table_name;
Essa consulta converte apenas as strings que têm 10 caracteres ou menos em números no Oracle.
Considerações
- Como as funções e métodos variam dependendo do banco de dados usado, é importante consultar a documentação específica do banco de dados.
- Ao converter grandes quantidades de dados, considere o impacto no desempenho e considere o processamento em lote ou o uso de índices.
Resumo
Este artigo explicou como converter strings em números no SQL com métodos específicos para os principais bancos de dados. No MySQL, CAST
e CONVERT
são usados; no PostgreSQL, CAST
e o operador ::
; no SQL Server, CAST
e CONVERT
; e no Oracle, a função TO_NUMBER
. Compreender os métodos de conversão para cada banco de dados e escolher o método apropriado garante operações de dados eficientes enquanto mantém a integridade dos dados. É importante considerar o tratamento de erros e considerações para seus dados específicos durante a conversão.