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

ROUND() Esempi in SQL Server

In SQL Server, T-SQL ROUND() La funzione consente di arrotondare un numero a una lunghezza o precisione specificata.

Fornisci il numero come argomento, nonché la lunghezza a cui desideri arrotondare il numero. La funzione accetta anche un terzo argomento facoltativo che consente di specificare se il numero viene arrotondato o troncato.

Sintassi

La sintassi è questa:

ROUND ( numeric_expression , length [ ,function ] )  

Dove gli argomenti hanno le seguenti definizioni:

espressione_numerica
È un'espressione della categoria del tipo di dati numerico esatto o approssimativo, ad eccezione del bit tipo di dati.
lunghezza
È la precisione con cui espressione_numerica deve essere arrotondato. Questo argomento deve essere un'espressione di tipo tinyint , piccolo o int . Quando è un numero positivo, numeric_expression viene arrotondato al numero di posizioni decimali specificate da questo argomento. Quando è un numero negativo, numeric_expression viene arrotondato sul lato sinistro della virgola decimale, come specificato da questo argomento.
funzione
È il tipo di operazione da eseguire. Deve essere tinyint , piccolo o int . Quando questo argomento viene omesso o ha un valore di 0 (predefinito), espressione_numerica è arrotondato. Quando viene specificato un valore diverso da 0, numeric_expression è troncato.

Esempio 1 – Utilizzo di base

Ecco un esempio di base per dimostrare come funziona questa funzione.

SELECT ROUND(1.49, 1) Result;

Risultato:

+----------+
| Result   |
|----------|
| 1.50     |
+----------+

In questo caso il numero viene arrotondato per eccesso.

Esempio 2:zero cifre decimali

Se impostiamo il secondo argomento a zero, ecco cosa succede:

SELECT ROUND(1.49, 0) Result;

Risultato:

+----------+
| Result   |
|----------|
| 1.00     |
+----------+

Questo perché abbiamo specificato zero parti frazionarie con cui arrotondare il numero.

Ed ecco cosa succede se cambio il numero iniziale in 1,50:

SELECT ROUND(1.50, 0) Result;

Risultato:

+----------+
| Result   |
|----------|
| 2.00     |
+----------+

Esempio 3:più posizioni decimali

Ecco un esempio in cui il numero da arrotondare contiene più cifre decimali.

SELECT ROUND(1.234, 2) Result;

Risultato:

+----------+
| Result   |
|----------|
| 1.230    |
+----------+

Ed ecco cosa succede quando aumento l'ultima cifra a 5:

SELECT ROUND(1.235, 2) Result;

Risultato:

+----------+
| Result   |
|----------|
| 1.240    |
+----------+

Naturalmente, potremmo usare molte più cifre decimali. Ad esempio, potremmo ridurre molte posizioni decimali.

SELECT ROUND(1.23456789123456789, 8) Result;

Risultato:

+---------------------+
| Result              |
|---------------------|
| 1.23456789000000000 |
+---------------------+

Esempio 4 – Troncamento (ovvero utilizzando un terzo argomento)

Come accennato, possiamo fornire un terzo argomento per specificare se il risultato è troncato o solo arrotondato. Gli esempi precedenti sono tutti arrotondati perché non abbiamo specificato un terzo argomento. Quando omettiamo il terzo argomento, viene utilizzato un valore di 0 (che significa arrotondare il risultato). Se forniamo un valore diverso da 0, il risultato viene troncato.

SELECT 
  ROUND(1.236, 2) 'Rounded (by default)',
  ROUND(1.236, 2, 0) 'Rounded (explicitly)',
  ROUND(1.236, 2, 1) 'Truncated';

Risultato:

+------------------------+------------------------+-------------+
| Rounded (by default)   | Rounded (explicitly)   | Truncated   |
|------------------------+------------------------+-------------|
| 1.240                  | 1.240                  | 1.230       |
+------------------------+------------------------+-------------+

Esempio 5 – Utilizzo di un valore negativo per il secondo argomento

Ecco come possiamo utilizzare un valore negativo sul secondo argomento per far sì che parti della parte non frazionaria vengano arrotondate a zero.

SELECT ROUND(123.456, -1) Result;

Risultato:

+----------+
| Result   |
|----------|
| 120.000  |
+----------+

Ed ecco come viene arrotondato se aumentiamo il 3 a 5 o più.

SELECT ROUND(125.456, -1) Result;

Risultato:

+----------+
| Result   |
|----------|
| 130.000  |
+----------+

Puoi farlo anche se il numero non contiene una parte frazionaria.

SELECT ROUND(125, -1) Result;

Risultato:

+----------+
| Result   |
|----------|
| 130      |
+----------+

Esempio 6 – Arrotondamento di numeri negativi e numeri positivi

Come visto negli esempi precedenti, quando si utilizzano numeri positivi, un valore con una parte frazionaria pari o superiore a 0,5 viene arrotondato al numero intero successivo.

Tuttavia, quando si utilizzano numeri negativi, tali valori vengono arrotondati per difetto .

SELECT 
  ROUND(1.50, 0) Positive,
  ROUND(-1.50, 0) Negative;

Risultato:

+------------+------------+
| Positive   | Negative   |
|------------+------------|
| 2.00       | -2.00      |
+------------+------------+