I SQL Server kan du bruge T-SQL SPACE()
funktion til at generere et bestemt antal mellemrum.
Dette kan være praktisk til at tilføje mellemrum i en streng, for eksempel ved sammenkædning af to eller flere strenge.
Den måde, det fungerer på, er, at du angiver det antal pladser, du har brug for, og det vil returnere en streng med præcis det antal pladser.
Syntaks
Syntaksen ser sådan ud:
SPACE ( integer_expression )
Hvor integer_expression er et positivt heltal, der angiver antallet af mellemrum. Hvis dette er en negativ værdi, NULL
er returneret.
Eksempel 1 – Grundlæggende brug
Her er et eksempel på, hvordan det virker:
SELECT SPACE(40) AS Result;
Resultat:
+------------------------------------------+ | Result | |------------------------------------------| | | +------------------------------------------+
Hvis det ikke er klart, resulterede det i 40 pladser.
Eksempel 2 – Sammenkædning med mellemrum
Dette eksempel kan vise effekten lidt bedre.
SELECT 'Keep' + SPACE(10) + 'away!' AS Result;
Resultat:
+---------------------+ | Result | |---------------------| | Keep away! | +---------------------+
Eksempel 3 – Negativ heltalsværdi
Argumentet skal være en positiv værdi. Hvis det er en negativ værdi, er resultatet NULL
:
SELECT SPACE(-10) AS Result;
Resultat:
+----------+ | Result | |----------| | NULL | +----------+
Eksempel 4 – Et databaseeksempel
Her er et simpelt eksempel på brug af SPACE()
for at indsætte mellemrum mellem to databasekolonner, når det returneres fra en 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';
Resultat:
+-------------------------------------------+ | 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 | +-------------------------------------------+
Hvad med 1 eller 2 mellemrum?
Dette er en fantastisk funktion til at tilføje masser af mellemrum, men det kan også forbedre kodelæsbarheden, når du inkluderer et lille antal mellemrum – især hvis koden indeholder mange forekomster af tilføjelse af mellemrum.
Når du bruger SPACE()
du kan se hvor mange mellemrum på et øjeblik uden at skulle tælle dem.
Se for eksempel, om du kan fortælle, hvor mange mellemrum der er i følgende:
SELECT 'Keep' + ' ' + 'away!';
Din første reaktion kan være et hurtigt gæt (f.eks. "2 eller 3"), før du kigger lidt nærmere for at tjekke. For at være 100 % sikker, skal du sandsynligvis føre markøren hen over pladsen for at tælle antallet af mellemrum.
Se nu på følgende kode:
SELECT 'Keep' + SPACE(2) + 'away!';
Ingen grund til at gætte. Du kan se 2
skrevet lige ind i koden.
Når det er sagt, kan værdien være inden for en variabel, så din kode kan se mere sådan ud:
SELECT 'Keep' + SPACE(@space_size) + 'away!';
Hvilket naturligvis ikke giver nogen anelse om, hvor mange pladser der er (uden at skulle slå det op). Men hvis du allerede kender værdien af @space_size
du er klar.
Eksempel 5 – Variabel rumstørrelse
Her er et eksempel, der demonstrerer det foregående punkt.
Her er antallet af mellemrum defineret i en variabel. I dette tilfælde er det let at se værdien af variablen, da den er defineret i linjen umiddelbart før SPACE()
funktion (selvfølgelig vil dette ikke altid være tilfældet):
DECLARE @space_size int SET @space_size = 2 SELECT 'Keep' + SPACE(@space_size) + 'away!' AS Result GO
Resultat:
+-------------+ | Result | |-------------| | Keep away! | +-------------+
Unicode eller mere end 8000 pladser?
Microsoft oplyser, at for at inkludere mellemrum i Unicode-data eller returnere mere end 8000 tegnmellemrum, skal du bruge REPLICATE
i stedet for SPACE
.