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