I SQL Server, T-SQL REPLICATE()
funktion gentager en strengværdi et angivet antal gange og returnerer resultatet.
Funktionen accepterer to argumenter; indtastningsstrengen, og antallet af gange den skal gentages.
Syntaks
Syntaksen ser sådan ud:
REPLICATE ( string_expression ,integer_expression )
Hvor string_expression er inputstrengen. Dette kan enten være tegn eller binære data.
Og integer_expression er et heltal, der angiver, hvor mange gange inputstrengen skal gentages. Dette kan enhver heltalstype, inklusive bigint .
Bemærk, at hvis det første argument ikke er af typen varchar(max) eller nvarchar(max) , afkorter funktionen returværdien ved 8.000 bytes. For at returnere værdier, der er større end 8.000 bytes, skal det første argument eksplicit castes til den relevante datatype med stor værdi.
Eksempel 1 – Grundlæggende brug
Her er et eksempel på, hvordan det virker:
SELECT REPLICATE('Dog', 3) AS Result;
Resultat:
+-----------+ | Result | |-----------| | DogDogDog | +-----------+
Eksempel 2 – Tilføj et mellemrum
Vi kan også tilføje et mellemrum til det forrige eksempel:
SELECT REPLICATE('Dog ', 3) AS Result;
Resultat:
+--------------+ | Result | |--------------| | Dog Dog Dog | +--------------+
Bemærk dog, at dette vil tilføje et mellemrum for enden af strengen.
Vi kunne bruge TRIM()
funktion til at overvinde dette:
SELECT TRIM(REPLICATE('Dog ', 3)) AS Result;
Resultat:
+-------------+ | Result | |-------------| | Dog Dog Dog | +-------------+
Måske vil følgende eksempel gøre dette mere tydeligt:
SELECT REPLICATE('Dog ', 3) + '.' AS 'Untrimmed', TRIM(REPLICATE('Dog ', 3)) + '.' AS 'Trimmed';
Resultat:
+---------------+--------------+ | Untrimmed | Trimmed | |---------------+--------------| | Dog Dog Dog . | Dog Dog Dog. | +---------------+--------------+
Eksempel 3 – Ugyldigt replikeringsantal
Hvis det andet argument er en negativ værdi, NULL
returneres:
SELECT REPLICATE('Dog', -3) AS Result;
Resultat:
+----------+ | Result | |----------| | NULL | +----------+
Eksempel 4 – Et databaseeksempel
Her er et eksempel på replikering af data fra en database:
SELECT TOP(3) TRIM(REPLICATE(ArtistName + ' ', 3)) AS Result FROM Artists;
Resultat:
+----------------------------------------------------+ | Result | |----------------------------------------------------| | Iron Maiden Iron Maiden Iron Maiden | | AC/DC AC/DC AC/DC | | Allan Holdsworth Allan Holdsworth Allan Holdsworth | +----------------------------------------------------+