In SQL Server, T-SQL STR()
la funzione restituisce i dati dei caratteri convertiti dai dati numerici. Il valore restituito ha un tipo restituito di varchar .
Fornisci i dati numerici come argomento quando chiami la funzione. La funzione lo converte quindi in dati di caratteri. Ci sono anche due argomenti facoltativi che puoi usare per specificare la lunghezza e il numero di posizioni a destra della virgola decimale.
Sintassi
La sintassi è questa:
STR ( float_expression [ , length [ , decimal ] ] )
Dove espressione_flottante è un'espressione di un valore numerico approssimativo (float ) tipo di dati con punto decimale.
lunghezza è un argomento facoltativo che puoi usare per specificare la lunghezza totale. Ciò include punto decimale, segno, cifre e spazi. Il valore predefinito è 10.
decimale è il numero di posizioni a destra della virgola decimale. Può essere un valore massimo di 16. Se superiore a quello, viene troncato a 16.
Esempio 1 – Utilizzo di base
Ecco un esempio di come funziona:
SELECT STR(123.45) AS Result;
Risultato:
+------------+ | Result | |------------| | 123 | +------------+
Esempio 2 – Arrotondamento
Per impostazione predefinita, il numero viene arrotondato a un numero intero. Se modifichiamo l'input dell'esempio precedente (ad esempio, aumentiamo la parte frazionaria da .45
a .55
) otteniamo quanto segue:
SELECT STR(123.55) AS Result;
Risultato:
+------------+ | Result | |------------| | 124 | +------------+
Esempio 3 – Lunghezza
Quando si utilizza la lunghezza opzionale parametro, il suo valore deve essere maggiore o uguale alla parte del numero prima della virgola decimale più il segno del numero (se presente).
Ad esempio, quanto segue va bene, perché length è maggiore della parte del numero prima del punto decimale:
SELECT STR(123.55, 4) AS Result;
Risultato:
+----------+ | Result | |----------| | 124 | +----------+
Tuttavia, l'esempio seguente mostra cosa succede quando length il valore è troppo piccolo:
SELECT STR(123.55, 2) AS Result;
Risultato:
+----------+ | Result | |----------| | ** | +----------+
Nota anche che lunghezza determina la lunghezza dell'output e include il punto decimale, il segno, le cifre e gli spazi. La lunghezza predefinita è 10.
Ecco un esempio per dimostrare la differenza nell'output in base al valore di length argomento:
SELECT 123 AS '123', STR(123, 3) AS '3', STR(123, 10) AS '10', STR(123, 16) AS '16';
Risultato:
+-------+-----+------------+------------------+ | 123 | 3 | 10 | 16 | |-------+-----+------------+------------------| | 123 | 123 | 123 | 123 | +-------+-----+------------+------------------+
Per un altro modo per dimostrarlo, nell'esempio seguente taglio l'output usando TRIM()
funzione (e confrontala con la versione non tagliata):
SELECT TRIM(STR(123, 16)) AS 'A', STR(123, 16) AS 'B';
Risultato:
+-----+------------------+ | A | B | |-----+------------------| | 123 | 123 | +-----+------------------+
Esempio 4 – Cifre decimali
Ecco un esempio di utilizzo dell'opzione decimale parametro:
SELECT STR(123.55, 8, 4) AS Result;
Risultato:
+----------+ | Result | |----------| | 123.5500 | +----------+
Nota che ho aumentato il valore per length per contenere le cifre decimali.
Se riduco la lunghezza valore a 6
, ho questo:
SELECT STR(123.55, 6, 4) AS Result;
Risultato:
+----------+ | Result | |----------| | 123.55 | +----------+