I SQL Server kan du använda T-SQL SPACE()
funktion för att generera ett specifikt antal utrymmen.
Detta kan vara praktiskt för att lägga till mellanslag i en sträng, till exempel när två eller flera strängar sammanfogas.
Så här fungerar det är att du anger antalet utrymmen du behöver, och det kommer att returnera en sträng med exakt det antalet utrymmen.
Syntax
Syntaxen ser ut så här:
SPACE ( integer_expression )
Där integer_expression är ett positivt heltal som anger antalet mellanslag. Om detta är ett negativt värde, NULL
returneras.
Exempel 1 – Grundläggande användning
Här är ett exempel på hur det fungerar:
SELECT SPACE(40) AS Result;
Resultat:
+------------------------------------------+ | Result | |------------------------------------------| | | +------------------------------------------+
Om det inte är klart, resulterade det i 40 platser.
Exempel 2 – Sammankoppling med mellanslag
Det här exemplet kan visa effekten lite bättre.
SELECT 'Keep' + SPACE(10) + 'away!' AS Result;
Resultat:
+---------------------+ | Result | |---------------------| | Keep away! | +---------------------+
Exempel 3 – Negativt heltalsvärde
Argumentet måste vara ett positivt värde. Om det är ett negativt värde är resultatet NULL
:
SELECT SPACE(-10) AS Result;
Resultat:
+----------+ | Result | |----------| | NULL | +----------+
Exempel 4 – Ett databasexempel
Här är ett enkelt exempel på hur du använder SPACE()
för att infoga utrymme mellan två databaskolumner när det returneras från en databas:
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 | +-------------------------------------------+
Vad sägs om 1 eller 2 mellanslag?
Det här är en utmärkt funktion för att lägga till många mellanslag, men den kan också förbättra kodläsbarheten när du inkluderar ett litet antal mellanslag – särskilt om koden innehåller många instanser av att lägga till mellanslag.
När du använder SPACE()
du kan se hur många mellanslag på ett ögonblick, utan att behöva räkna dem.
Se till exempel om du kan se hur många blanksteg som finns i följande:
SELECT 'Keep' + ' ' + 'away!';
Din första reaktion kan vara en snabb gissning (säg "2 eller 3") innan du tittar lite närmare för att kontrollera. För att vara 100 % säker måste du antagligen föra markören över utrymmet för att räkna antalet blanksteg.
Titta nu på följande kod:
SELECT 'Keep' + SPACE(2) + 'away!';
Du behöver inte gissa. Du kan se 2
skrivet rakt in i koden.
Med det sagt kan värdet vara inom en variabel, så att din kod kan se ut mer så här:
SELECT 'Keep' + SPACE(@space_size) + 'away!';
Vilket uppenbarligen inte ger någon aning om hur många utrymmen det finns (utan att behöva slå upp det). Men om du redan vet värdet på @space_size
du är klar.
Exempel 5 – Variabel utrymmesstorlek
Här är ett exempel som visar föregående punkt.
Här definieras antalet mellanslag inom en variabel. I det här fallet är det lätt att se värdet på variabeln, eftersom den är definierad på raden omedelbart före SPACE()
funktion (uppenbarligen kommer detta inte alltid att vara fallet):
DECLARE @space_size int SET @space_size = 2 SELECT 'Keep' + SPACE(@space_size) + 'away!' AS Result GO
Resultat:
+-------------+ | Result | |-------------| | Keep away! | +-------------+
Unicode eller mer än 8000 utrymmen?
Microsoft uppger att för att inkludera mellanslag i Unicode-data, eller för att returnera mer än 8000 teckenmellanslag, bör du använda REPLICATE
istället för SPACE
.