Come Convertire Stringhe in Numeri in SQL

Quando si lavora con i dati in SQL, potrebbe essere necessario convertire stringhe in numeri. Ad esempio, se l’input dell’utente o i dati importati sono memorizzati in formato stringa, devono essere convertiti per essere elaborati come numeri. Questo articolo fornisce spiegazioni dettagliate con esempi specifici su come convertire stringhe in numeri nei database MySQL, PostgreSQL, SQL Server e Oracle.

Indice

Metodi di Conversione in MySQL

In MySQL, è comune utilizzare le funzioni CAST o CONVERT per convertire stringhe in numeri. Ecco esempi specifici.

Utilizzo della Funzione CAST

Il metodo per convertire stringhe in numeri utilizzando la funzione CAST è il seguente:

SELECT CAST('1234' AS UNSIGNED);

Questa query converte la stringa ‘1234’ in un intero. Cambiando UNSIGNED in SIGNED o DECIMAL, è possibile convertire in diversi tipi numerici.

Utilizzo della Funzione CONVERT

È inoltre possibile utilizzare la funzione CONVERT per convertire stringhe in numeri.

SELECT CONVERT('1234', UNSIGNED);

Questa query converte anche la stringa ‘1234’ in un intero. È possibile cambiare UNSIGNED con altri tipi numerici secondo necessità.

Esempio Pratico

Ad esempio, per gestire i dati sull’età memorizzati come stringhe nella tabella users:

SELECT user_id, CAST(age AS UNSIGNED) AS numeric_age FROM users;

Questa query recupera l’user_id e l’age convertito in un numero come numeric_age dalla tabella users.

Metodi di Conversione in PostgreSQL

In PostgreSQL, è comune utilizzare la funzione CAST o l’operatore :: per convertire stringhe in numeri. Ecco esempi specifici.

Utilizzo della Funzione CAST

Il metodo per convertire stringhe in numeri utilizzando la funzione CAST è il seguente:

SELECT CAST('1234' AS INTEGER);

Questa query converte la stringa ‘1234’ in un intero. Cambiando INTEGER in NUMERIC o FLOAT, è possibile convertire in diversi tipi numerici.

Utilizzo dell’Operatore ::

È inoltre possibile utilizzare l’operatore :: per convertire stringhe in numeri.

SELECT '1234'::INTEGER;

Questa query converte anche la stringa ‘1234’ in un intero. È possibile cambiare INTEGER con altri tipi numerici secondo necessità.

Esempio Pratico

Ad esempio, per gestire i dati sugli importi memorizzati come stringhe nella tabella orders:

SELECT order_id, CAST(amount AS NUMERIC) AS numeric_amount FROM orders;

Questa query recupera l’order_id e l’amount convertito in un numero come numeric_amount dalla tabella orders.

Metodi di Conversione in SQL Server

In SQL Server, è comune utilizzare le funzioni CAST o CONVERT per convertire stringhe in numeri. Ecco esempi specifici.

Utilizzo della Funzione CAST

Il metodo per convertire stringhe in numeri utilizzando la funzione CAST è il seguente:

SELECT CAST('1234' AS INT);

Questa query converte la stringa ‘1234’ in un intero. Cambiando INT in DECIMAL o FLOAT, è possibile convertire in diversi tipi numerici.

Utilizzo della Funzione CONVERT

È inoltre possibile utilizzare la funzione CONVERT per convertire stringhe in numeri.

SELECT CONVERT(INT, '1234');

Questa query converte anche la stringa ‘1234’ in un intero. È possibile cambiare il primo argomento con altri tipi numerici secondo necessità.

Esempio Pratico

Ad esempio, per gestire i dati sulle vendite memorizzati come stringhe nella tabella sales:

SELECT sale_id, CAST(sale_amount AS DECIMAL(10, 2)) AS numeric_sale_amount FROM sales;

Questa query recupera l’sale_id e l’sale_amount convertito in un numero come numeric_sale_amount dalla tabella sales.

Metodi di Conversione in Oracle

In Oracle, è comune utilizzare la funzione TO_NUMBER per convertire stringhe in numeri. Ecco esempi specifici.

Utilizzo della Funzione TO_NUMBER

Il metodo per convertire stringhe in numeri utilizzando la funzione TO_NUMBER è il seguente:

SELECT TO_NUMBER('1234') FROM dual;

Questa query converte la stringa ‘1234’ in un numero. È anche possibile specificare un modello di formato con la funzione TO_NUMBER.

Utilizzo di un Modello di Formato

È possibile specificare un modello di formato con la funzione TO_NUMBER per convertire stringhe in numeri.

SELECT TO_NUMBER('1,234.56', '9,999.99') FROM dual;

Questa query converte la stringa ‘1,234.56’, che include una virgola e un punto decimale, in un numero.

Esempio Pratico

Ad esempio, per gestire i dati sui salari memorizzati come stringhe nella tabella employees:

SELECT employee_id, TO_NUMBER(salary) AS numeric_salary FROM employees;

Questa query recupera l’employee_id e il salary convertito in un numero come numeric_salary dalla tabella employees.

Gestione degli Errori e Considerazioni

Vari errori possono verificarsi durante la conversione di stringhe in numeri. Qui spieghiamo gli errori comuni e come evitarli.

Formato Stringa Non Valido

Se è inclusa una stringa non valida, la conversione fallirà. Ad esempio, se sono inclusi caratteri alfabetici o speciali nel numero, la conversione fallirà. In tali casi, è necessario pulire i dati prima della conversione.

SELECT CASE
           WHEN ISNUMERIC(column_name) = 1 THEN CAST(column_name AS INT)
           ELSE NULL
       END AS numeric_column
FROM table_name;

Questa query utilizza la funzione ISNUMERIC in SQL Server per convertire solo quelle stringhe che possono essere convertite in numeri.

Gestione dei Valori NULL

Se la stringa è NULL, anche il risultato della conversione sarà NULL. Se i valori NULL sono problematici, sono necessarie misure come l’impostazione di valori predefiniti.

SELECT COALESCE(CAST(column_name AS INT), 0) AS numeric_column
FROM table_name;

Questa query imposta il valore predefinito a 0 se sono inclusi valori NULL.

Errori di Troncamento

Se la stringa da convertire supera l’intervallo del tipo numerico target, si verificherà un errore di troncamento. È importante controllare preventivamente la lunghezza o il valore della stringa.

SELECT CASE
           WHEN LENGTH(column_name) <= 10 THEN TO_NUMBER(column_name)
           ELSE NULL
       END AS numeric_column
FROM table_name;

Questa query converte solo quelle stringhe che sono lunghe 10 caratteri o meno in numeri in Oracle.

Considerazioni

  • Poiché le funzioni e i metodi variano a seconda del database utilizzato, è importante fare riferimento alla documentazione specifica del database.
  • Quando si convertono grandi quantità di dati, considerare l’impatto sulle prestazioni e prendere in considerazione l’elaborazione a lotti o l’utilizzo di indici.

Riepilogo

Questo articolo ha spiegato come convertire stringhe in numeri in SQL con metodi specifici per i principali database. In MySQL, si utilizzano CAST e CONVERT; in PostgreSQL, CAST e l’operatore ::; in SQL Server, CAST e CONVERT; e in Oracle, la funzione TO_NUMBER. Comprendere i metodi di conversione per ciascun database e scegliere il metodo appropriato garantisce operazioni sui dati efficienti mantenendo l’integrità dei dati. È importante considerare la gestione degli errori e le considerazioni per i propri dati specifici durante la conversione.

Indice