Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

ROUND() Exemples dans SQL Server

Dans SQL Server, le T-SQL ROUND() La fonction vous permet d'arrondir un nombre à une longueur ou une précision spécifiée.

Vous fournissez le nombre comme argument, ainsi que la longueur à laquelle vous souhaitez que le nombre soit arrondi. La fonction accepte également un troisième argument facultatif qui vous permet de spécifier si le nombre est arrondi ou tronqué.

Syntaxe

La syntaxe ressemble à ceci :

ROUND ( numeric_expression , length [ ,function ] )  

Où les arguments ont les définitions suivantes :

expression_numérique
Est une expression de la catégorie de type de données numérique exacte ou numérique approximative, à l'exception du bit type de données.
longueur
Est la précision à laquelle numeric_expression est à arrondir. Cet argument doit être une expression de type tinyint , smallint , ou entier . Lorsqu'il s'agit d'un nombre positif, numeric_expression est arrondi au nombre de décimales spécifié par cet argument. Lorsqu'il s'agit d'un nombre négatif, numeric_expression est arrondi sur le côté gauche de la virgule décimale, comme spécifié par cet argument.
fonction
Est le type d'opération à effectuer. Ce doit être tinyint , smallint , ou entier . Lorsque cet argument est omis ou a la valeur 0 (par défaut), numeric_expression est arrondi. Lorsqu'une valeur autre que 0 est spécifiée, numeric_expression est tronqué.

Exemple 1 - Utilisation de base

Voici un exemple de base pour illustrer le fonctionnement de cette fonction.

SELECT ROUND(1.49, 1) Result;

Résultat :

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

Dans ce cas, le nombre est arrondi.

Exemple 2 – Zéro décimale

Si nous définissons le deuxième argument sur zéro, voici ce qui se passe :

SELECT ROUND(1.49, 0) Result;

Résultat :

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

C'est parce que nous avons spécifié zéro partie fractionnaire avec laquelle arrondir le nombre.

Et voici ce qui se passe si je change le nombre initial en 1,50 :

SELECT ROUND(1.50, 0) Result;

Résultat :

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

Exemple 3 - Plus de décimales

Voici un exemple où le nombre à arrondir contient plus de décimales.

SELECT ROUND(1.234, 2) Result;

Résultat :

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

Et voici ce qui se passe lorsque j'augmente le dernier chiffre à 5 :

SELECT ROUND(1.235, 2) Result;

Résultat :

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

Bien sûr, nous pourrions utiliser beaucoup plus de décimales. Par exemple, nous pourrions réduire de nombreuses décimales.

SELECT ROUND(1.23456789123456789, 8) Result;

Résultat :

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

Exemple 4 - Troncature (c'est-à-dire en utilisant un troisième argument)

Comme mentionné, nous pouvons fournir un troisième argument pour spécifier si le résultat est tronqué ou simplement arrondi. Les exemples précédents sont tous arrondis car nous n'avons pas spécifié de troisième argument. Lorsque nous omettons le troisième argument, la valeur 0 est utilisée (ce qui signifie arrondir le résultat). Si nous fournissons une valeur autre que 0, le résultat est tronqué.

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

Résultat :

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

Exemple 5 - Utilisation d'une valeur négative pour le deuxième argument

Voici comment nous pouvons utiliser une valeur négative sur le deuxième argument pour que des parties de la partie non fractionnaire soient arrondies à zéro.

SELECT ROUND(123.456, -1) Result;

Résultat :

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

Et voici comment cela s'arrondit si nous augmentons le 3 à 5 ou plus.

SELECT ROUND(125.456, -1) Result;

Résultat :

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

Vous pouvez le faire même si le nombre ne contient pas de partie fractionnaire.

SELECT ROUND(125, -1) Result;

Résultat :

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

Exemple 6 - Arrondir les nombres négatifs par rapport aux nombres positifs

Comme vu dans les exemples précédents, lors de l'utilisation de nombres positifs, une valeur avec une partie fractionnaire de 0,5 ou plus est arrondie à l'entier supérieur.

Cependant, lorsque vous utilisez des nombres négatifs, ces valeurs sont arrondies vers le bas .

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

Résultat :

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