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

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

In SQL Server können Sie das T-SQL SPACE() verwenden Funktion zum Generieren einer bestimmten Anzahl von Leerzeichen.

Dies kann praktisch sein, um Leerzeichen in eine Zeichenfolge einzufügen, beispielsweise wenn zwei oder mehr Zeichenfolgen verkettet werden.

So funktioniert es:Sie geben die Anzahl an Leerzeichen an, die Sie benötigen, und es wird eine Zeichenfolge mit genau dieser Anzahl an Leerzeichen zurückgegeben.

Syntax

Die Syntax lautet wie folgt:

SPACE ( integer_expression )

Wobei Ganzzahl_Ausdruck ist eine positive Ganzzahl, die die Anzahl der Leerzeichen angibt. Wenn dies ein negativer Wert ist, NULL zurückgegeben wird.

Beispiel 1 – Grundlegende Verwendung

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

SELECT SPACE(40) AS Result;

Ergebnis:

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

Wenn es nicht klar ist, hat das 40 Leerzeichen ergeben.

Beispiel 2 – Verkettung mit Leerzeichen

Dieses Beispiel demonstriert den Effekt vielleicht etwas besser.

SELECT 'Keep' + SPACE(10) + 'away!' AS Result;

Ergebnis:

+---------------------+
| Result              |
|---------------------|
| Keep          away! |
+---------------------+

Beispiel 3 – Negativer ganzzahliger Wert

Das Argument muss ein positiver Wert sein. Wenn es sich um einen negativen Wert handelt, ist das Ergebnis NULL :

SELECT SPACE(-10) AS Result;

Ergebnis:

+----------+
| Result   |
|----------|
| NULL     |
+----------+

Beispiel 4 – Ein Datenbankbeispiel

Hier ist ein einfaches Beispiel für die Verwendung von SPACE() Leerzeichen zwischen zwei Datenbankspalten einzufügen, wenn sie von einer Datenbank zurückgegeben werden:

USE Music;
SELECT TOP(7)
  ArtistName + SPACE(5) + AlbumName AS 'Artist and Album'
FROM Artists ar
INNER JOIN Albums al
  ON ar.ArtistId = al.ArtistId
INNER JOIN Genres g
  ON al.GenreId = g.GenreId
WHERE g.Genre = 'Rock';

Ergebnis:

+-------------------------------------------+
| Artist and Album                          |
|-------------------------------------------|
| Iron Maiden     Powerslave                |
| AC/DC     Powerage                        |
| Devin Townsend     Ziltoid the Omniscient |
| Devin Townsend     Casualties of Cool     |
| Devin Townsend     Epicloud               |
| Iron Maiden     Somewhere in Time         |
| Iron Maiden     Piece of Mind             |
+-------------------------------------------+

Was ist mit 1 oder 2 Leerzeichen?

Dies ist eine großartige Funktion, um viele Leerzeichen hinzuzufügen, aber sie kann auch die Lesbarkeit des Codes verbessern, wenn eine kleine Anzahl von Leerzeichen eingefügt wird – insbesondere, wenn der Code viele Instanzen enthält, in denen Leerzeichen hinzugefügt werden.

Bei Verwendung von SPACE() Sie können sofort sehen, wie viele Leerzeichen vorhanden sind, ohne sie zählen zu müssen.

Sehen Sie zum Beispiel nach, ob Sie sagen können, wie viele Leerzeichen im Folgenden sind:

SELECT 'Keep' + '  ' + 'away!';

Ihre erste Reaktion könnte eine schnelle Vermutung sein (z. B. „2 oder 3“), bevor Sie etwas genauer hinschauen, um es zu überprüfen. Um 100 % sicher zu sein, müssten Sie wahrscheinlich mit dem Cursor über das Leerzeichen fahren, um die Anzahl der Leerzeichen zu zählen.

Sehen Sie sich nun den folgenden Code an:

SELECT 'Keep' + SPACE(2) + 'away!';

Keine Notwendigkeit zu raten. Sie können 2 sehen direkt in den Code geschrieben.

Allerdings könnte der Wert auch in einer Variablen stehen, sodass Ihr Code eher so aussehen könnte:

SELECT 'Keep' + SPACE(@space_size) + 'away!';

Was offensichtlich keinen Hinweis darauf gibt, wie viele Leerzeichen es gibt (ohne es nachschlagen zu müssen). Wenn Sie jedoch bereits den Wert von @space_size kennen Sie können loslegen.

Beispiel 5 – Variable Raumgröße

Hier ist ein Beispiel, das den vorherigen Punkt demonstriert.

Hier wird die Anzahl der Leerzeichen innerhalb einer Variablen definiert. In diesem Fall ist der Wert der Variablen leicht zu erkennen, da er in der Zeile unmittelbar vor dem SPACE() definiert ist Funktion (offensichtlich wird dies nicht immer der Fall sein):

DECLARE @space_size int
SET @space_size = 2
SELECT 'Keep' + SPACE(@space_size) + 'away!' AS Result
GO

Ergebnis:

+-------------+
| Result      |
|-------------|
| Keep  away! |
+-------------+

Unicode oder mehr als 8000 Leerzeichen?

Microsoft gibt an, dass Sie REPLICATE verwenden sollten, um Leerzeichen in Unicode-Daten einzuschließen oder mehr als 8000 Zeichen zurückzugeben statt SPACE .