您的位置:首页 > 数据库

生成测试数据-3-T-SQL系列

2009-11-06 14:24 585 查看
按指定次数重复字符表达式。

语法

REPLICATE (character_expression, integer_expression)

参数

character_expression
字符数据型的字母数字表达式,或者可以隐式转换为 nvarcharntext 的其他数据类型的字母数字表达式。

integer_expression
可以隐式转换为 int 的表达式。如果 integer_expression 为负,将返回空字符串。

返回值

nvarcharntext

(3) 若想确认每次执行RAND()函数是否产生不同的结果,应该为RAND()指定种子,即把一个整数置于圆括号中。可以用@@spid ,即新建表的object_id,或其它“几乎随机”的整数作为种子值。

IF (ISNULL(OBJECT_ID(''random_data''),0))>0
DROP TABLE random_data
GO

CREATE TABLE random_data
(
COL1 int PRIMARY KEY,
col2 int,
col3 char(15)
)
GO

DECLARE @counter int,@col2 int,@col3 char(15)
/*Insert 1000 rows of date  */
--Seed Random generator
SELECT @counter=0,@col2=RAND(@@spid+cpu+physical_io)
FROM master..sysprocesses WHERE spid=@@spid

WHILE (@counter<1000)
BEGIN
SELECT @counter=@counter+10,  --Sequence numbers by 10
@col2=
CASE      --Random integer between -9999 and 9999
WHEN CONVERT(int,RAND()*100)%2=1
THEN (CONVERT(int,RAND()*100000)%10000*-1)
ELSE CONVERT(int,RAND()*100000)%10000
END,
@col3=
CHAR((CONVERT(int,RAND()*1000)%26)+65)  --65 is A
+CHAR((CONVERT(int,RAND()*1000)%26)+65)
+CHAR((CONVERT(int,RAND()*1000)%26)+65)
+CHAR((CONVERT(int,RAND()*1000)%26)+65)
+REPLICATE(CHAR((CONVERT(int,RAND()*1000)%26)+65),11)

INSERT random_data valueS(@counter,@col2,@col3)
END
GO

SELECT * FROM random_data WHERE col1<200


用另一种方法实现:

CREATE TABLE random_data
(
COL1 int PRIMARY KEY IDENTITY(10,10) NOT NULL,
col2 int NOT NULL DEFAULT CASE
--Random integer between -9999 and 9999
WHEN CONVERT(int,RAND()*100)%2=1
THEN (CONVERT(int,RAND()*100000)%10000*-1)
ELSE CONVERT(int,RAND()*100000)%10000
END,
col3 char(15) NOT NULL DEFAULT
CHAR((CONVERT(int,RAND()*1000)%26)+65)  --65 is A
+CHAR((CONVERT(int,RAND()*1000)%26)+65)
+CHAR((CONVERT(int,RAND()*1000)%26)+65)
+CHAR((CONVERT(int,RAND()*1000)%26)+65)
+REPLICATE(CHAR((CONVERT(int,RAND()*1000)%26)+65),11)
)
GO

DECLARE @counter int
SELECT @counter=1

WHILE (@counter<1000)
BEGIN
INSERT random_data DEFAULT valueS
SET @counter=@counter+1
END
GO

SELECT * FROM random_data WHERE col1<200
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: