sql >> Databasteknik >  >> RDS >> Sqlserver

Hur SPACE()-funktionen fungerar i SQL Server (T-SQL)

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 .


  1. Användarkontohantering, roller, behörigheter, autentisering PHP och MySQL

  2. Visa Modal Window-meddelanden i Oracle Forms med Show_Alert

  3. Hur pratar Access med ODBC-datakällor? Del 1

  4. Android SQLite-fråga där kolumnen inte är null och inte tom