W SQL Server, T-SQL REPLICATE()
funkcja powtarza wartość ciągu określoną liczbę razy i zwraca wynik.
Funkcja przyjmuje dwa argumenty; ciąg wejściowy i liczbę powtórzeń.
Składnia
Składnia wygląda tak:
REPLICATE ( string_expression ,integer_expression )
Gdzie string_expression jest ciągiem wejściowym. Mogą to być dane znakowe lub binarne.
I integer_expression jest liczbą całkowitą, która określa, ile razy należy powtórzyć ciąg wejściowy. Może to być dowolny typ liczby całkowitej, w tym bigint .
Zauważ, że jeśli pierwszy argument nie jest typu varchar(max) lub nvarchar(maks.) , funkcja obcina zwracaną wartość do 8000 bajtów. Aby zwrócić wartości większe niż 8000 bajtów, pierwszy argument musi być jawnie rzutowany na odpowiedni typ danych o dużej wartości.
Przykład 1 – Podstawowe użycie
Oto przykład tego, jak to działa:
SELECT REPLICATE('Dog', 3) AS Result;
Wynik:
+-----------+ | Result | |-----------| | DogDogDog | +-----------+
Przykład 2 – Dodaj spację
Możemy również dodać spację do poprzedniego przykładu:
SELECT REPLICATE('Dog', 3) AS Result;
Wynik:
+--------------+ | Result | |--------------| | Dog Dog Dog | +--------------+
Pamiętaj jednak, że spowoduje to również dodanie spacji na końcu ciągu.
Moglibyśmy użyć TRIM()
funkcja do przezwyciężenia tego:
SELECT TRIM(REPLICATE('Dog ', 3)) AS Result;
Wynik:
+-------------+ | Result | |-------------| | Dog Dog Dog | +-------------+
Może poniższy przykład sprawi, że będzie to bardziej widoczne:
SELECT REPLICATE('Dog ', 3) + '.' AS 'Untrimmed', TRIM(REPLICATE('Dog ', 3)) + '.' AS 'Trimmed';
Wynik:
+---------------+--------------+ | Untrimmed | Trimmed | |---------------+--------------| | Dog Dog Dog . | Dog Dog Dog. | +---------------+--------------+
Przykład 3 – Nieprawidłowa liczba replikacji
Jeśli drugi argument jest wartością ujemną, NULL
jest zwracany:
SELECT REPLICATE('Dog', -3) AS Result;
Wynik:
+----------+ | Result | |----------| | NULL | +----------+
Przykład 4 – Przykład bazy danych
Oto przykład replikacji danych z bazy danych:
SELECT TOP(3) TRIM(REPLICATE(ArtistName + ' ', 3)) AS Result FROM Artists;
Wynik:
+----------------------------------------------------+ | Result | |----------------------------------------------------| | Iron Maiden Iron Maiden Iron Maiden | | AC/DC AC/DC AC/DC | | Allan Holdsworth Allan Holdsworth Allan Holdsworth | +----------------------------------------------------+