Como Converter Strings em Números no SQL

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.

Índice

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.

Índice