REPLICATE (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punto de conexión de análisis SQL en Microsoft FabricAlmacenamiento en Microsoft Fabric

Repite un valor de cadena un número especificado de veces.

Convenciones de sintaxis de Transact-SQL

Sintaxis

REPLICATE ( string_expression , integer_expression )   

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

Argumentos

string_expression
Es una expresión de un tipo de datos binario o de cadena de caracteres.

Nota

Si string_expression es de tipo binary, REPLICATE realizará una conversión implícita a varchar y, por tanto, no conservará la entrada binaria.

Nota

Si la entrada string_expression no es de tipo varchar(max) o nvarchar(max), REPLICATE trunca el valor devuelto en 8000 bytes. Para devolver valores mayores de 8000 bytes, string_expression debe convertirse explícitamente al tipo de datos de valores grandes apropiado.

integer_expression
Es una expresión de cualquier tipo entero, incluido bigint. Si integer_expression es negativo, se devuelve NULL.

Tipos de valor devuelto

Devuelve el mismo tipo que string_expression.

Ejemplos

A. Usar REPLICATE

En el ejemplo siguiente se replica un carácter 0 cuatro veces delante de un código de línea de producción en la base de datos AdventureWorks2022.

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

El conjunto de resultados es el siguiente:

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. Usar REPLICATE y DATALENGTH

En el ejemplo siguiente se rellena de números a la izquierda hasta una longitud especificada mientras que los números se convierten de un tipo de datos numérico a caracteres o 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  

El conjunto de resultados es el siguiente:

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

Ejemplos: Azure Synapse Analytics y Sistema de la plataforma de análisis (PDW)

C. Usar REPLICATE

En el siguiente ejemplo se replica un carácter 0 cuatro veces delante de un valor ItemCode.

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

Estas son las primeras filas del conjunto de resultados.

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

Consulte también

SPACE (Transact-SQL)
Tipos de datos (Transact-SQL)
String Functions (Transact-SQL) [Funciones de cadena (Transact-SQL)]