Funzione CAST di SQL Server

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:

SELECT 1 + '1' AS result;
Code language: PHP (php)

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:

SELECT 1 + CAST(1 AS INT) result;
Code language: PHP (php)

La sintassi della funzione CAST() è la seguente:

CAST ( expression AS target_type )
Code language: CSS (css)

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. Include INTBITSQL_VARIANT, ecc. Si noti che non può essere un tipo di dati alias.
  • length è un intero opzionale che specifica la lunghezza del tipo target. Il length 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:

SELECT CAST(5.95 AS INT) result;
Code language: CSS (css)

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:

SELECT CAST(5.95 AS DEC(3,0)) result;
Code language: CSS (css)

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:

SELECT CAST('2019-03-14' AS DATETIME) result;
Code language: PHP (php)

L’output è:

result-----------------------2019-03-14 00:00:00.000(1 row affected)
Code language: CSS (css)

D) Usare la funzione CAST() con operatori aritmetici

Utilizzeremo le tabelle sales.orders e sales.order_items del database di esempio per la dimostrazione:

Tabelle di esempio

La seguente dichiarazione utilizza la funzione CAST() per convertire le vendite mensili del 2017 in valori interi.

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;
Code language: PHP (php)

L’immagine seguente mostra l’output:

esempio di funzione CAST di SQL Server

In questo tutorial, avete imparato ad usare la funzione SQL Server CAST() per convertire un valore da un tipo ad un altro.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *