Udostępnij za pomocą


REPLIKUJ (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Powtarza wartość ciągu znaków określoną liczbę razy.

Transact-SQL konwencje składni

Składnia

REPLICATE ( string_expression , integer_expression )   

Arguments

string_expression
Jest wyrażeniem ciągu znaków lub binarnego typu danych.

Uwaga / Notatka

Jeśli string_expression jest binarnym typu, REPLICATE wykona niejawną konwersję na varchar, a zatem nie zachowa binarnego wejścia.

Uwaga / Notatka

Jeśli string_expression wejście nie jest typu varchar(max) ani nvarchar(max), REPLICATE skraca wartość zwracaną do 8 000 bajtów. Aby zwrócić wartości większe niż 8 000 bajtów, string_expression musi być wyraźnie przypisane do odpowiedniego typu danych o dużej wartości.

integer_expression
Jest wyrażeniem dowolnego typu całkowitego, w tym bigint. Jeśli integer_expression jest ujemny, zwraca się NULL.

Typy zwracane

Zwraca ten sam typ co string_expression.

Przykłady

A. Używając REPLICATE

Poniższy przykład replikuje 0 znak cztery razy przed kodem linii produkcyjnej w bazie AdventureWorks2025.

SELECT [Name]  
, REPLICATE('0', 4) + [ProductLine] AS 'Line Code'  
FROM [Production].[Product]  
WHERE [ProductLine] = 'T'  
ORDER BY [Name];  
GO  

Oto zestaw wyników.

Name                                               Line Code  
-------------------------------------------------- ---------  
HL Touring Frame - Blue, 46                        0000T   
HL Touring Frame - Blue, 50                        0000T   
HL Touring Frame - Blue, 54                        0000T   
HL Touring Frame - Blue, 60                        0000T   
HL Touring Frame - Yellow, 46                      0000T   
HL Touring Frame - Yellow, 50                      0000T  
...  

B. Używając REPLICATE i DATALENGTH

Poniższy przykład w lewej stronie przypisuje numery do określonej długości, gdy są one konwertowane z numerycznego typu danych na znak lub Unicode.

IF EXISTS(SELECT name FROM sys.tables  
      WHERE name = 't1')  
   DROP TABLE t1;  
GO  
CREATE TABLE t1   
(  
 c1 varchar(3),  
 c2 char(3)  
);  
GO  
INSERT INTO t1 VALUES ('2', '2'), ('37', '37'),('597', '597');  
GO  
SELECT REPLICATE('0', 3 - DATALENGTH(c1)) + c1 AS 'Varchar Column',  
       REPLICATE('0', 3 - DATALENGTH(c2)) + c2 AS 'Char Column'  
FROM t1;  
GO  

Oto zestaw wyników.

  
Varchar Column        Char Column  
--------------------  ------------  
002                   2    
037                   37   
597                   597  
  
(3 row(s) affected)  
  

Przykłady: Azure Synapse Analytics and Analytics Platform System (PDW)

C: Używanie REPLICATE

Poniższy przykład replikuje 0 znak cztery razy przed wartością ItemCode .

-- Uses AdventureWorks  
  
SELECT EnglishProductName AS Name,  
   ProductAlternateKey AS ItemCode,  
   REPLICATE('0', 4) + ProductAlternateKey AS FullItemCode  
FROM dbo.DimProduct  
ORDER BY Name;  

Oto pierwsze wiersze w zbiorze wyników.

Name                     ItemCode       FullItemCode
------------------------ -------------- ---------------
Adjustable Race          AR-5381        0000AR-5381
All-Purpose Bike Stand   ST-1401        0000ST-1401
AWC Logo Cap             CA-1098        0000CA-1098
AWC Logo Cap             CA-1098        0000CA-1098
AWC Logo Cap             CA-1098        0000CA-1098
BB Ball Bearing          BE-2349        0000BE-2349

Zobacz też

PRZESTRZEŃ (Transact-SQL)
typy danych (Transact-SQL)
funkcje ciągów (Transact-SQL)