Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

3 modi per convertire un numero intero in decimale in SQL Server

Ecco tre opzioni per convertire un numero intero in un valore decimale in SQL Server usando T-SQL.

Il CAST() Funzione

Il CAST() converte un'espressione di un tipo di dati in un altro:

SELECT CAST(275 AS DECIMAL(5, 2));

Risultato:

275.00

In questo esempio, abbiamo convertito un numero intero (275 ) in un valore decimale con una precisione di 5 e con 2 decimali.

Decimale e numerico sono sinonimi e possono essere usati in modo intercambiabile. Pertanto, possiamo modificare il nostro esempio come segue per ottenere lo stesso risultato:

SELECT CAST(275 AS NUMERIC(5, 2));

Risultato:

275.00

È importante ricordare di regolare la precisione come richiesto:

SELECT CAST(18301275 AS DECIMAL(10, 2));

Risultato:

18301275.00

Se l'argomento precision non è abbastanza grande, si verifica un errore:

SELECT CAST(18301275 AS DECIMAL(9, 2));

Risultato:

Msg 8115, Level 16, State 8, Line 1
Arithmetic overflow error converting int to data type numeric.

Il CONVERT() Funzione

Il CONVERT() la funzione fa la stessa cosa di CAST() , tranne che con una sintassi leggermente diversa:

SELECT CONVERT(DECIMAL(5, 2), 275);

Risultato:

275.00

Utilizza un operatore aritmetico

Un'altra opzione consiste nell'utilizzare un operatore aritmetico, come un operatore di moltiplicazione:

SELECT 275 * 1.00;

Risultato:

275.00

In questo esempio, moltiplichiamo l'intero per 1.00 .

In SQL Server, ogni volta che un operatore combina espressioni di tipi di dati diversi, il tipo di dati con la precedenza più bassa viene prima convertito nel tipo di dati con la precedenza più alta. L'operazione restituisce quindi il tipo di dati dell'argomento con la precedenza più alta.

In SQL Server, decimale ha la precedenza su intero.

Moltiplicandolo per 1,00, non cambieremo la parte intera. Lo stiamo semplicemente convertendo in decimale e aggiungendo la parte frazionaria.

Vedere Precedenza dei tipi di dati in SQL Server per un elenco dei tipi di dati in ordine di precedenza.