Transact-SQL 参考

REPLICATE

以指定的次数重复字符表达式。

语法

REPLICATE ( character_expression , integer_expression )

参数

character_expression

由字符数据组成的字母数字表达式。character_expression 可以是常量或变量,也可以是字符列或二进制数据列。

integer_expression

是正整数。如果 integer_expression 为负,则返回空字符串。

返回类型

varchar

character_expression 必须为可隐性转换为 varchar 的数据类型。否则,使用 CAST 函数显式转换 character_expression

注释

兼容级别可能影响返回值。有关更多信息,请参见 sp_dbcmptlevel

示例
A. 使用 REPLICATE

下例重复两遍每个作者的名字。

USE pubs
SELECT REPLICATE(au_fname, 2) 
FROM authors
ORDER BY au_fname

下面是结果集:

---------------------- 
AbrahamAbraham                           
AkikoAkiko                               
AlbertAlbert                             
AnnAnn                                   
AnneAnne                                 
BurtBurt                                 
CharleneCharlene                         
CherylCheryl                             
DeanDean                                 
DirkDirk                                 
HeatherHeather                           
InnesInnes                               
JohnsonJohnson                           
LiviaLivia                               
MarjorieMarjorie                         
MeanderMeander                           
MichaelMichael                           
MichelMichel                             
MorningstarMorningstar                   
ReginaldReginald                         
SherylSheryl                             
StearnsStearns                           
SylviaSylvia                             
(23 row(s) affected)
B. 使用 REPLICATE、SUBSTRING 和 SPACE

下例使用 REPLICATE、SUBSTRING 和 SPACE 生成 authors 表中的所有作者的电话和传真列表。

-- Replicate phone number twice because the fax number is identical to 
-- the author telephone number.
USE pubs
GO
SELECT SUBSTRING((UPPER(au_lname) + ',' + SPACE(1) + au_fname), 1, 35) 
   AS Name, phone AS Phone, REPLICATE(phone,1) AS Fax
FROM authors
ORDER BY au_lname, au_fname
GO

下面是结果集:

Name                                Phone        Fax                    
----------------------------------- ------------ -----------------------
BENNET, Abraham                     415 658-9932 415 658-9932           
BLOTCHET-HALLS, Reginald            503 745-6402 503 745-6402           
CARSON, Cheryl                      415 548-7723 415 548-7723           
DEFRANCE, Michel                    219 547-9982 219 547-9982           
DEL CASTILLO, Innes                 615 996-8275 615 996-8275           
DULL, Ann                           415 836-7128 415 836-7128           
GREEN, Marjorie                     415 986-7020 415 986-7020           
GREENE, Morningstar                 615 297-2723 615 297-2723           
GRINGLESBY, Burt                    707 938-6445 707 938-6445           
HUNTER, Sheryl                      415 836-7128 415 836-7128           
KARSEN, Livia                       415 534-9219 415 534-9219           
LOCKSLEY, Charlene                  415 585-4620 415 585-4620           
MACFEATHER, Stearns                 415 354-7128 415 354-7128           
MCBADDEN, Heather                   707 448-4982 707 448-4982           
O'LEARY, Michael                    408 286-2428 408 286-2428           
PANTELEY, Sylvia                    301 946-8853 301 946-8853           
RINGER, Albert                      801 826-0752 801 826-0752           
RINGER, Anne                        801 826-0752 801 826-0752           
SMITH, Meander                      913 843-0462 913 843-0462           
STRAIGHT, Dean                      415 834-2919 415 834-2919           
STRINGER, Dirk                      415 843-2991 415 843-2991           
WHITE, Johnson                      408 496-7223 408 496-7223           
YOKOMOTO, Akiko                     415 935-4228 415 935-4228           
(23 row(s) affected)
C. 使用 REPLICATE 和 DATALENGTH

本例中,当数值从数字数据类型转换为字符型或 Unicode 型时,从左填充数字,使其达到指定的长度。

USE Northwind
GO
DROP TABLE t1
GO
CREATE TABLE t1 
(
 c1 varchar(3),
 c2 char(3)
)
GO
INSERT INTO t1 VALUES ('2', '2')
INSERT INTO t1 VALUES ('37', '37')
INSERT INTO t1 VALUES ('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

请参见

数据类型

字符串函数