Dans SQL Server, le T-SQL STR()
La fonction renvoie des données de caractères converties à partir de données numériques. La valeur de retour a un type de retour de varchar .
Vous fournissez les données numériques comme argument lors de l'appel de la fonction. La fonction le convertit ensuite en données de caractères. Il existe également deux arguments facultatifs que vous pouvez utiliser pour spécifier la longueur et le nombre de décimales à droite de la virgule.
Syntaxe
La syntaxe ressemble à ceci :
STR ( expression_float [ , longueur [ , décimal ] ] )
Où expression_float est une expression numérique approximative (float ) type de données avec un point décimal.
longueur est un argument facultatif que vous pouvez utiliser pour spécifier la longueur totale. Cela inclut le point décimal, le signe, les chiffres et les espaces. La valeur par défaut est 10.
décimal est le nombre de décimales à droite de la virgule. Cela peut être une valeur maximale de 16. Si plus que cela, il est tronqué à 16.
Exemple 1 - Utilisation de base
Voici un exemple de son fonctionnement :
SELECT STR(123.45) COMME Résultat ;
Résultat :
+------------+| Résultat ||------------|| 123 |+------------+
Exemple 2 – Arrondi
Par défaut, le nombre est arrondi à un nombre entier. Si nous ajustons l'entrée de l'exemple précédent (par exemple, augmentez la partie fractionnaire de .45
à .55
) nous obtenons ceci :
SELECT STR(123.55) COMME Résultat ;
Résultat :
+------------+| Résultat ||------------|| 124 |+------------+
Exemple 3 – Longueur
Lors de l'utilisation de la longueur facultative paramètre, sa valeur doit être supérieure ou égale à la partie du nombre avant la virgule décimale plus le signe du nombre (le cas échéant).
Par exemple, ce qui suit convient, car longueur est supérieur à la partie du nombre avant la virgule :
SELECT STR(123.55, 4) COMME Résultat ;
Résultat :
+----------+| Résultat ||----------|| 124 |+----------+
Cependant, l'exemple suivant montre ce qui se passe lorsque la longueur la valeur est trop petite :
SELECT STR(123.55, 2) COMME Résultat ;
Résultat :
+----------+| Résultat ||----------|| ** |+----------+
Notez également que longueur détermine la longueur de la sortie et inclut la virgule décimale, le signe, les chiffres et les espaces. La longueur par défaut est 10.
Voici un exemple pour démontrer la différence de sortie en fonction de la valeur de la longueur argument :
SELECT 123 AS '123', STR(123, 3) AS '3', STR(123, 10) AS '10', STR(123, 16) AS '16' ;
Résultat :
+-------+-----+------------+------------------+ | 123 | 3 | 10 | 16 ||-------+-----+------------+------------------|| 123 | 123 | 123 | 123 |+-------+-----+------------+------------------+Pour une autre façon de le démontrer, dans l'exemple suivant, je découpe la sortie à l'aide de
TRIM()
fonction (et comparez-la à la version non découpée) :SÉLECTIONNER TRIM(STR(123, 16)) AS 'A', STR(123, 16) AS 'B' ;Résultat :
+-----+------------------+| Un | B ||-----+------------------|| 123 | 123 |+-----+------------------+Exemple 4 – Décimales
Voici un exemple d'utilisation de l'option décimal paramètre :
SELECT STR(123.55, 8, 4) COMME Résultat ;Résultat :
+----------+| Résultat ||----------|| 123.5500 |+----------+Notez que j'ai augmenté la valeur de longueur afin de tenir compte des décimales.
Si je réduis la longueur valeur à
6
, j'obtiens ceci :SELECT STR(123.55, 6, 4) COMME Résultat ;Résultat :
+----------+| Résultat ||----------|| 123.55 |+----------+