随机插入数据

--CREATE TABLE [dbo].[Student] (   
-- [StudentId] [int] IDENTITY (1, 1) NOT NULL ,   
-- [StudentName] [nvarchar] (40) COLLATE Chinese_PRC_CI_AS NULL ,   
-- [StudentPassword] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,   
-- [EmailAddress] [nvarchar] (40) COLLATE Chinese_PRC_CI_AS NULL ,   
-- [DateCreated] [datetime] NULL    
--)   
truncate table student--初始化表
-----随机插入数据 10000条数据9秒 100000条数据70秒
declare @i int,@name nvarchar(40),
@pwd nvarchar(20),@email nvarchar(40),@date datetime;
set @i=1;
while(@i<=10000)
    begin
        set    @i=@i+1;
        set @name=''; 
        set @pwd=''; 
        set @email=''; 
        set @date='';
        --用户名
        set @name=isnull(@name,'')+char(65+ceiling(rand()*25));--用户名 首字母大写
        while(len(@name)<=5)--用户名 前4位小写字母
            begin
                set @name=@name+char(97+ceiling(rand()*25));
            end
        while(len(@name)<=8)--用户名 后3位数字
            begin
                set @name=@name+cast(ceiling(rand()*9) as varchar(1));
            end
        --密码
        while(len(isnull(@pwd,''))<=6)--密码  6位数字
            begin
                set @pwd=isnull(@pwd,'')+cast(ceiling(rand()*9) as varchar(1));
            end
        --Email
        while(
len(isnull(@email,''))<=6)--email 前6位无序
            begin
                set @email=isnull(@email,'')+
                                case abs(checksum(newid()))%(3) 
                                when 0 then char(65+abs(checksum(newid()))%(26) ) --大写A-Z
                                when 1 then char(97+abs(checksum(newid()))%(26) ) --小写a-z
                                when 2 then char(48+abs(checksum(newid()))%(10) ) --0到9
                                end
            end
            set @email=@email+'@daylin.com'
        --时间
         --随机2个时间之间的时间
        declare @Date1 smalldatetime,
                @starttime smalldatetime, --开始时间  
                @endtime smalldatetime --结束时间  
        select  @starttime='2000-01-01 00:00:00', 
                @endtime='2013-06-01 23:59:59', 
                @Date1='2010-10-10 10:00:00' 
        select @Date1=left(convert(varchar(22), DATEADD(second,
                        convert(int, rand()*DATEDIFF(second,@starttime,@endtime)),@starttime)), 16)
        --求开始时间和结束时间的秒差,然后去乘随机rand(rand始终小于1),把结果加到开始时间上
        set @date=isnull(@date,'')+@Date1;
    select @name,@pwd,@email,@date
    insert into student values(@name,@pwd,@email,@date)
end


select * from student


truncate table student--初始化表
select char(65+ceiling(rand()*25))   --随机字母(大写)
select char(97+ceiling(rand()*25))   --随机字母(小写)
select cast(floor(rand()*10) as varchar(1))   --随机数字 0至9的随机数字(整数)
select cast(ceiling(rand()*9) as varchar(1))   --随机数字 1至9的随机数字(整数)

select char(65+abs(checksum(newid()))%(26) ) --随机字母(大写)
select char(97+abs(checksum(newid()))%(26) )--随机字母(小写)
select char(48+abs(checksum(newid()))%(10) ) --随机数字 0至9的随机数字(整数)

select newid();--获取随机ID 
select checksum('A')--返回按照表的某一行或一组表达式计算出来的校验和值。返回值为int类型 结果:114
select abs(-123)--abs函数返回给定数字表达式的绝对值。结果:123
select str('123.456',6,2)--1参:数字 2参:转换后字符长度 3参:小数点后几位。注:str转换小数时会四舍五入 结果:123.46
select len(str('12',2))

declare --随机2个时间之间的时间
@Date1 smalldatetime,
    @starttime smalldatetime, --开始时间  
    @endtime smalldatetime --结束时间  
select @starttime='2000-01-01 00:00:00', 
    @endtime='2013-06-01 23:59:59', 
    @Date1='2010-10-10 10:00:00' 
select @Date1=left(convert(varchar(22), 
        DATEADD(second,convert(int, rand()*DATEDIFF(second,@starttime,@endtime)),@starttime)), 16)
select @date1

 

转载于:https://www.cnblogs.com/daylin/archive/2013/06/02/3113391.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值