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.
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.