Guida Completa alla Conversione dei Tipi di Dato Utilizzando la Funzione CAST di SQL

Quando si lavora con i dati in SQL, potrebbe essere necessario convertire i valori tra diversi tipi di dati. La funzione CAST di SQL è uno strumento conveniente per eseguire queste conversioni di tipo di dati in modo facile e chiaro. Questo articolo fornisce una spiegazione dettagliata su come utilizzare la funzione CAST, inclusi l’uso di base, esempi di conversione specifici, esempi avanzati e metodi di gestione degli errori. Migliora la tua conoscenza della conversione dei tipi di dati SQL e mira a creare query più avanzate.

Indice

Sintassi Base della Funzione CAST

La funzione CAST è una funzione SQL standard per la conversione dei tipi di dati. La sintassi base è la seguente:

CAST(expression AS target_data_type)

Qui, expression è il valore o la colonna da convertire, e target_data_type è il tipo di dato di destinazione. Ad esempio, per convertire una stringa in un intero, è possibile utilizzare la seguente query:

SELECT CAST('123' AS INT);

Questa query converte la stringa '123' in un intero e restituisce il valore numerico 123.

Esempi di Conversione dei Tipi di Dato

Ecco alcuni esempi tipici di conversione dei tipi di dati utilizzando la funzione CAST.

Conversione di Stringa in Intero

Esempio di conversione di dati di tipo stringa in dati di tipo intero.

SELECT CAST('456' AS INT) AS ConvertedValue;

Questa query converte la stringa '456' nell’intero 456.

Conversione di Intero in Stringa

Esempio di conversione di dati di tipo intero in dati di tipo stringa.

SELECT CAST(789 AS VARCHAR(10)) AS ConvertedValue;

Questa query converte l’intero 789 nella stringa '789'.

Conversione di Stringa in Data

Esempio di conversione di dati di tipo stringa in dati di tipo data.

SELECT CAST('2024-05-24' AS DATE) AS ConvertedValue;

Questa query converte la stringa '2024-05-24' nella data 2024-05-24.

Conversione di Numero Decimale in Intero

Esempio di conversione di dati di tipo numero decimale in dati di tipo intero.

SELECT CAST(123.456 AS INT) AS ConvertedValue;

Questa query converte il numero decimale 123.456 nell’intero 123.

Differenze tra le Funzioni CAST e CONVERT

SQL dispone anche della funzione CONVERT, che è simile alla funzione CAST, ma ci sono alcune differenze tra le due.

Differenze Fondamentali

La funzione CAST è conforme allo standard ANSI SQL ed è supportata dalla maggior parte dei database. Al contrario, la funzione CONVERT è un’estensione utilizzata principalmente in Microsoft SQL Server e fornisce opzioni di formattazione specifiche.

Differenze di Sintassi

Sintassi della funzione CAST:

CAST(expression AS target_data_type)

Sintassi della funzione CONVERT:

CONVERT(target_data_type, expression [, style])

La funzione CONVERT ha un’opzione style che consente di convertire date o stringhe in formati specifici.

Esempi di Utilizzo

Esempio della funzione CAST:

SELECT CAST('123' AS INT) AS ConvertedValue;

Esempio della funzione CONVERT:

SELECT CONVERT(INT, '123') AS ConvertedValue;

Esempio della funzione CONVERT utilizzando l’opzione di formattazione:

SELECT CONVERT(VARCHAR, GETDATE(), 101) AS USFormattedDate;

Questa query converte la data corrente in una stringa nel formato MM/DD/YYYY.

Esempi Avanzati Utilizzando la Funzione CAST

La funzione CAST può essere utilizzata in vari scenari avanzati oltre alla conversione base dei tipi di dati. Ecco alcuni esempi pratici.

Concatenazione di Numeri come Stringhe

Esempio di conversione di un numero in stringa e concatenazione con un’altra stringa.

SELECT 'Order Number: ' + CAST(OrderID AS VARCHAR) AS OrderDescription
FROM Orders;

Questa query converte il OrderID in una stringa e lo concatena con la stringa Order Number:.

Forzare la Coerenza dei Tipi di Dato

Esempio di garanzia della coerenza dei tipi di dato quando si utilizzano colonne di diversi tipi di dati insieme.

SELECT CAST(SalesAmount AS DECIMAL(10, 2)) AS FormattedSalesAmount
FROM Sales;

Questa query converte la colonna SalesAmount in un tipo DECIMAL con 2 cifre decimali.

Confrontare Date e Stringhe

Esempio di conversione di una data in un tipo stringa per il confronto.

SELECT *
FROM Events
WHERE CAST(EventDate AS VARCHAR) = '2024-05-24';

Questa query converte la colonna EventDate in una stringa e cerca le righe che corrispondono alla data specificata come stringa.

Conversione Condizionale dei Tipi di Dato

Esempio di utilizzo dell’istruzione CASE per eseguire la conversione condizionale dei tipi di dati.

SELECT 
    CASE 
        WHEN IsNumeric(Value) = 1 THEN CAST(Value AS INT)
        ELSE NULL
    END AS ConvertedValue
FROM SampleTable;

Questa query converte la colonna Value in un intero solo se il valore è numerico.

Gestione degli Errori Utilizzando la Funzione CAST

Possono verificarsi errori durante la conversione dei tipi di dato. Ecco alcuni metodi di gestione degli errori da considerare quando si utilizza la funzione CAST.

Utilizzo della Funzione TRY_CAST

In SQL Server, è possibile utilizzare la funzione TRY_CAST per prevenire errori di conversione. TRY_CAST restituisce NULL se la conversione fallisce.

SELECT TRY_CAST('abc' AS INT) AS SafeConversion;

Questa query restituisce NULL perché la conversione della stringa 'abc' in un intero fallisce.

Gestione degli Errori con le Istruzioni CASE

Esempio di combinazione dell’istruzione CASE con la gestione degli errori basata su condizioni.

SELECT 
    CASE 
        WHEN ISNUMERIC(Value) = 1 THEN CAST(Value AS INT)
        ELSE NULL
    END AS SafeConversion
FROM SampleTable;

Questa query restituisce NULL se il Value non è numerico.

Utilizzo della Funzione TRY_PARSE

TRY_PARSE è utile per convertire stringhe in date o numeri. TRY_PARSE restituisce anche NULL se la conversione fallisce.

SELECT TRY_PARSE('2024-05-24' AS DATE USING 'en-US') AS SafeDateConversion;

Questa query converte la stringa '2024-05-24' in un tipo data e restituisce NULL se la conversione fallisce.

Query di Esempio per la Gestione degli Errori

Ecco un esempio di gestione degli errori utilizzando TRY_CAST.

SELECT 
    Name, 
    TRY_CAST(Age AS INT) AS SafeAge 
FROM Users;

Questa query previene errori restituendo NULL se i valori nella colonna Age non possono essere convertiti in interi.

Conclusione

La funzione CAST è uno strumento potente e flessibile per la conversione dei tipi di dati in SQL. Comprendere la sua sintassi base e provare vari esempi di conversione dei tipi di dati ti aiuterà a sviluppare competenze per creare query più complesse. Inoltre, è importante conoscere le differenze e l’uso di altre funzioni di conversione come CONVERT e TRY_CAST. Una corretta gestione degli errori garantisce la creazione di query SQL affidabili. Padroneggia l’uso della funzione CAST per eseguire operazioni sul database in modo più efficiente.

Indice