Sommario: in questo tutorial, imparerete come usare la funzione CAST()
di SQL Server per convertire un valore o un’espressione da un tipo ad un altro.
Introduzione alla funzione CAST() di SQL Server
Vediamo la seguente query:
Code language: PHP (php)SELECT 1 + '1' AS result;
Ritorna 2 come numero:
result-----------2(1 row affected)
In questa dichiarazione, SQL Server converte implicitamente la stringa di caratteri '1'
nel numero 1
.
Quando si usano due valori con tipi di dati diversi, SQL Server cercherà di convertire il tipo di dati inferiore in quello superiore prima di poter elaborare il calcolo. Questo è noto come una conversione implicita in SQL Server.
In contrasto con le conversioni implicite, abbiamo conversioni esplicite dove si chiama la funzione CAST()
per convertire esplicitamente un valore di un tipo in un altro:
Code language: PHP (php)SELECT 1 + CAST(1 AS INT) result;
La sintassi della funzione CAST()
è la seguente:
Code language: CSS (css)CAST ( expression AS target_type )
In questa sintassi:
-
expression
può essere un valore letterale o un’espressione valida di qualsiasi tipo che sarà convertita. -
target_type
è il tipo di dati di destinazione in cui si vuole convertire l’espressione. IncludeINT
BIT
SQL_VARIANT
, ecc. Si noti che non può essere un tipo di dati alias. -
length
è un intero opzionale che specifica la lunghezza del tipo target. Illength
predefinito è 30.
La funzione CAST()
restituisce l’espressione convertita nel tipo di dati di destinazione.
Esempi di funzione SQL Server CAST()
Facciamo alcuni esempi di utilizzo della funzione CAST()
.
A) Utilizzo della funzione CAST() per convertire un decimale in un intero
Questo esempio utilizza la funzione CAST()
per convertire il numero decimale 5.95
in un intero:
Code language: CSS (css)SELECT CAST(5.95 AS INT) result;
Ecco l’output:
result-----------5(1 row affected)
B) Usare la funzione CAST() per convertire un decimale in un altro decimale di lunghezza diversa
L’esempio seguente usa la funzione CAST()
per convertire il numero decimale 5.95 in un altro numero decimale con la scala zero:
Code language: CSS (css)SELECT CAST(5.95 AS DEC(3,0)) result;
L’output è il seguente:
result-------6
Quando si converte un valore dei tipi di dati in luoghi diversi, SQL Server restituirà un risultato troncato o un valore arrotondato in base alle seguenti regole:
From Data Type | To Data Type | Behavior | |
---|---|---|---|
numerico | numerico | Round | |
numerico | int | Truncate | |
numerico | money | Round | |
money | int | Round | |
denaro | numerico | Round | |
float | int | Truncate | |
float | numerico | Round | |
float | datetime | Round | |
datetime | int | Round |
C) Uso della funzione CAST() per convertire una stringa in un valore di data
Questo esempio usa la funzione CAST()
per convertire la stringa '2019-03-14'
in una data:
Code language: PHP (php)SELECT CAST('2019-03-14' AS DATETIME) result;
L’output è:
Code language: CSS (css)result-----------------------2019-03-14 00:00:00.000(1 row affected)
D) Usare la funzione CAST() con operatori aritmetici
Utilizzeremo le tabelle sales.orders
e sales.order_items
del database di esempio per la dimostrazione:
La seguente dichiarazione utilizza la funzione CAST()
per convertire le vendite mensili del 2017 in valori interi.
Code language: PHP (php)SELECT MONTH(order_date) month, CAST(SUM(quantity * list_price * (1 - discount)) AS INT) amountFROM sales.orders o INNER JOIN sales.order_items i ON o.order_id = i.order_idWHERE YEAR(order_date) = 2017GROUP BY MONTH(order_date)ORDER BY month;
L’immagine seguente mostra l’output:
In questo tutorial, avete imparato ad usare la funzione SQL Server CAST()
per convertire un valore da un tipo ad un altro.