V SQL Server, T-SQL REPLICATE()
funkce zopakuje hodnotu řetězce zadaný početkrát a vrátí výsledek.
Funkce přijímá dva argumenty; vstupní řetězec a počet opakování.
Syntaxe
Syntaxe vypadá takto:
REPLICATE ( string_expression ,integer_expression )
Kde řetězcový_výraz je vstupní řetězec. Mohou to být znaková nebo binární data.
A integer_expression je celé číslo, které určuje, kolikrát se má vstupní řetězec opakovat. Může to být jakýkoli typ celého čísla, včetně bigint .
Všimněte si, že pokud první argument není typu varchar(max) nebo nvarchar(max) , funkce zkrátí návratovou hodnotu na 8 000 bajtů. Chcete-li vrátit hodnoty větší než 8 000 bajtů, musí být první argument explicitně přetypován na příslušný datový typ s velkou hodnotou.
Příklad 1 – Základní použití
Zde je příklad, jak to funguje:
SELECT REPLICATE('Dog', 3) AS Result;
Výsledek:
+-----------+ | Result | |-----------| | DogDogDog | +-----------+
Příklad 2 – Přidání mezery
K předchozímu příkladu můžeme také přidat mezeru:
SELECT REPLICATE('Dog ', 3) AS Result;
Výsledek:
+--------------+ | Result | |--------------| | Dog Dog Dog | +--------------+
I když mějte na paměti, že to přidá mezeru i na konec řetězce.
Mohli bychom použít TRIM()
funkce k překonání tohoto:
SELECT TRIM(REPLICATE('Dog ', 3)) AS Result;
Výsledek:
+-------------+ | Result | |-------------| | Dog Dog Dog | +-------------+
Možná to objasní následující příklad:
SELECT REPLICATE('Dog ', 3) + '.' AS 'Untrimmed', TRIM(REPLICATE('Dog ', 3)) + '.' AS 'Trimmed';
Výsledek:
+---------------+--------------+ | Untrimmed | Trimmed | |---------------+--------------| | Dog Dog Dog . | Dog Dog Dog. | +---------------+--------------+
Příklad 3 – Neplatný počet replikací
Pokud je druhý argument záporná hodnota, NULL
je vráceno:
SELECT REPLICATE('Dog', -3) AS Result;
Výsledek:
+----------+ | Result | |----------| | NULL | +----------+
Příklad 4 – Příklad databáze
Zde je příklad replikace dat z databáze:
SELECT TOP(3) TRIM(REPLICATE(ArtistName + ' ', 3)) AS Result FROM Artists;
Výsledek:
+----------------------------------------------------+ | Result | |----------------------------------------------------| | Iron Maiden Iron Maiden Iron Maiden | | AC/DC AC/DC AC/DC | | Allan Holdsworth Allan Holdsworth Allan Holdsworth | +----------------------------------------------------+