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

Come funziona la funzione STR() in SQL Server (T-SQL)

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   |
+----------+