sql >> Database >  >> RDS >> Sqlserver

Hoe de SPACE()-functie werkt in SQL Server (T-SQL)

In SQL Server kunt u de T-SQL SPACE() functie om een ​​bepaald aantal spaties te genereren.

Dit kan handig zijn voor het toevoegen van spaties binnen een tekenreeks, bijvoorbeeld bij het aaneenschakelen van twee of meer tekenreeksen.

De manier waarop het werkt, is dat je het aantal spaties opgeeft dat je nodig hebt, en het zal een reeks van precies dat aantal spaties retourneren.

Syntaxis

De syntaxis gaat als volgt:

SPACE ( integer_expression )

Waar integer_expression is een positief geheel getal dat het aantal spaties aangeeft. Als dit een negatieve waarde is, NULL wordt geretourneerd.

Voorbeeld 1 – Basisgebruik

Hier is een voorbeeld van hoe het werkt:

SELECT SPACE(40) AS Result;

Resultaat:

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

Als het niet duidelijk is, leverde dat 40 plaatsen op.

Voorbeeld 2 – Aaneenschakeling met spaties

Dit voorbeeld laat het effect misschien wat beter zien.

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

Resultaat:

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

Voorbeeld 3 – Negatieve integerwaarde

Het argument moet een positieve waarde zijn. Als het een negatieve waarde is, is het resultaat NULL :

SELECT SPACE(-10) AS Result;

Resultaat:

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

Voorbeeld 4 – Een databasevoorbeeld

Hier is een eenvoudig voorbeeld van het gebruik van SPACE() om ruimte tussen twee databasekolommen in te voegen wanneer geretourneerd vanuit een database:

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';

Resultaat:

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

Hoe zit het met 1 of 2 ruimtes?

Dit is een geweldige functie om veel spaties toe te voegen, maar het kan ook de leesbaarheid van de code verbeteren als er een klein aantal spaties wordt gebruikt, vooral als de code veel gevallen bevat waarin spaties zijn toegevoegd.

Bij gebruik van SPACE() je kunt zien hoeveel spaties in een oogwenk, zonder ze te hoeven tellen.

Kijk bijvoorbeeld eens of je kunt zien hoeveel spaties er in het volgende staan:

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

Je eerste reactie kan een snelle gok zijn (zeg, "2 of 3"), voordat je wat nauwkeuriger gaat kijken om het te controleren. Om 100% zeker te zijn, zou je waarschijnlijk met je cursor over de spatie moeten gaan om het aantal spaties te tellen.

Kijk nu naar de volgende code:

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

Je hoeft niet te raden. Je kunt 2 . zien rechtstreeks in de code geschreven.

Dat gezegd hebbende, kan de waarde binnen een variabele liggen, zodat uw code er meer als volgt uit kan zien:

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

Wat natuurlijk geen idee geeft van hoeveel ruimtes er zijn (zonder dat je het hoeft op te zoeken). Als u echter de waarde van @space_size . al kent, je bent klaar om te gaan.

Voorbeeld 5 – Variabele ruimtegrootte

Hier is een voorbeeld dat het vorige punt demonstreert.

Hier wordt het aantal spaties gedefinieerd binnen een variabele. In dit geval is het gemakkelijk om de waarde van de variabele te zien, zoals deze is gedefinieerd in de regel direct voorafgaand aan de SPACE() functie (dit zal natuurlijk niet altijd het geval zijn):

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

Resultaat:

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

Unicode of meer dan 8000 spaties?

Microsoft stelt dat u REPLICATE moet gebruiken om spaties in Unicode-gegevens op te nemen of om meer dan 8000 tekens te retourneren. in plaats van SPACE .


  1. Wat zijn de beperkingen voor SQL Server Compact? (Of - hoe kies je een database voor gebruik op MS-platforms?)

  2. Oracle UNION-operator uitgelegd

  3. De eerste dag van de week in MySql krijgen met Week No

  4. Een tabel neerzetten in SQL