Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Funktionsweise der STR()-Funktion in SQL Server (T-SQL)

In SQL Server das T-SQL STR() Die Funktion gibt Zeichendaten zurück, die aus numerischen Daten konvertiert wurden. Der Rückgabewert hat den Rückgabetyp varchar .

Beim Aufruf der Funktion geben Sie die numerischen Daten als Argument an. Die Funktion wandelt sie dann in Zeichendaten um. Es gibt auch zwei optionale Argumente, mit denen Sie die Länge und die Anzahl der Stellen rechts vom Dezimalkomma angeben können.

Syntax

Die Syntax sieht so aus:

STR ( float_expression [ , length [ , decimal ] ] )

Wobei float_expression ist ein ungefährer numerischer Ausdruck (float ) Datentyp mit einem Dezimalpunkt.

Länge ist ein optionales Argument, mit dem Sie die Gesamtlänge angeben können. Dazu gehören Dezimalpunkt, Vorzeichen, Ziffern und Leerzeichen. Der Standardwert ist 10.

dezimal ist die Anzahl der Stellen rechts vom Dezimalkomma. Dies kann ein Maximalwert von 16 sein. Wenn er größer ist, wird er auf 16 gekürzt.

Beispiel 1 – Grundlegende Verwendung

Hier ist ein Beispiel dafür, wie es funktioniert:

SELECT STR(123.45) AS Result;

Ergebnis:

+------------+
| Result     |
|------------|
|        123 |
+------------+

Beispiel 2 – Rundung

Standardmäßig wird die Zahl auf eine Ganzzahl gerundet. Wenn wir die Eingabe aus dem vorherigen Beispiel anpassen (z. B. den Bruchteil von .45 erhöhen). zu .55 ) erhalten wir Folgendes:

SELECT STR(123.55) AS Result;

Ergebnis:

+------------+
| Result     |
|------------|
|        124 |
+------------+

Beispiel 3 – Länge

Bei Verwendung der optionalen Länge Parameter, sein Wert sollte größer oder gleich dem Teil der Zahl vor dem Dezimalpunkt plus dem Vorzeichen der Zahl (falls vorhanden) sein.

Folgendes ist zum Beispiel in Ordnung, weil length ist größer als der Teil der Zahl vor dem Komma:

SELECT STR(123.55, 4) AS Result;

Ergebnis:

+----------+
| Result   |
|----------|
|  124     |
+----------+

Das folgende Beispiel zeigt jedoch, was passiert, wenn die Länge Wert ist zu klein:

SELECT STR(123.55, 2) AS Result;

Ergebnis:

+----------+
| Result   |
|----------|
| **       |
+----------+

Beachten Sie auch die Länge bestimmt die Länge der Ausgabe und enthält Dezimalpunkt, Vorzeichen, Ziffern und Leerzeichen. Die Standardlänge ist 10.

Hier ist ein Beispiel, um den Unterschied in der Ausgabe in Abhängigkeit vom Wert der Länge zu demonstrieren Argument:

SELECT 
  123 AS '123',
  STR(123, 3) AS '3',
  STR(123, 10) AS '10',
  STR(123, 16) AS '16';

Ergebnis:

+-------+-----+------------+------------------+
| 123   | 3   | 10         | 16               |
|-------+-----+------------+------------------|
| 123   | 123 |        123 |              123 |
+-------+-----+------------+------------------+

Um dies auf andere Weise zu demonstrieren, trimme ich im folgenden Beispiel die Ausgabe mit TRIM() Funktion (und vergleichen Sie sie mit der ungetrimmten Version):

SELECT 
  TRIM(STR(123, 16)) AS 'A',
  STR(123, 16) AS 'B';

Ergebnis:

+-----+------------------+
| A   | B                |
|-----+------------------|
| 123 |              123 |
+-----+------------------+

Beispiel 4 – Dezimalstellen

Hier ist ein Beispiel für die Verwendung des optionalen decimal Parameter:

SELECT STR(123.55, 8, 4) AS Result;

Ergebnis:

+----------+
| Result   |
|----------|
| 123.5500 |
+----------+

Beachten Sie, dass ich den Wert für length erhöht habe um die Nachkommastellen unterzubringen.

Wenn ich die Länge reduziere Wert auf 6 , bekomme ich das:

SELECT STR(123.55, 6, 4) AS Result;

Ergebnis:

+----------+
| Result   |
|----------|
| 123.55   |
+----------+