sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan fungerer SPACE()-funktionen i SQL Server (T-SQL)

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 .


  1. Hvor værdi i kolonne, der indeholder kommaseparerede værdier

  2. Bind array-param til indbygget forespørgsel

  3. Hvordan får jeg min, median og max fra min forespørgsel i postgresql?

  4. 6 måder at tilføje et år til en dato i MariaDB