21回答

0收藏

如何在SQL Server中生成随机数据

技术问答 技术问答 740 人阅读 | 21 人回复 | 2022-03-03

为了在视频表中插入随机数据,我想创建一个存储过程。我已经在做了UserProfile记录数据的表生成数据。- L& ~& M- r" Y# c+ ~
注:用户名在视频表中FK元素。  R) e! ]- O- Z& t/ |
CREATE TABLE UserProfile (  Username VARCHAR(45)  NOT NULL  , UserPassword VARCHAR(45)  NOT NULL  , Email VARCHAR(45)  NOT NULL  , FName VARCHAR(45)  NOT NULL  , LName VARCHAR(45)  NOT NULL  , Birthdate DATE   , Genger VARCHAR(10)  NOT NULL  , ZipCode INT  , Image VARCHAR(50)    , PRIMARY KEY(Username));GOCREATE TABLE Video (  VideoId INT  NOT NULL DEFAULT 1000 , Username VARCHAR(45)  NOT NULL  ,    VideoName VARCHAR(160)  NOT NULL  , UploadTime DATE  , TotalViews INT  , Thumbnail VARCHAR(100)    , PRIMARY KEY(VideoId), FOREIGN KEY(Username)    REFERENCES UserProfile(Username));GO               
4 B; ?) x# w2 b9 O/ P, v- _' O    解决方案:                                                                  @( y: m. z: M$ Y
                                                                即使在SQL生成随机数据并不难。  l6 k/ g$ R2 ?# ]- Z- d
例如,从你的userprofile在表中获取随机用户名。
3 y0 s, N% A1 U' v% h" T9 g- |  ]# K- yBEGIN-- get a random row from a tableDECLARE @username VARCHAR(50)SELECT @username = [Username] FROM  SELECT ROW_NUMBER() OVER(ORDER BY [Username]) [row],[Username]    FROM [UserProfile]) t WHERE t.row = 1   (SELECT CAST(RAND() * COUNT(*) as INT) FROM [UserProfile])print(@username)END产生随机整数…* ]& L! _0 @) _4 a% o
BEGIN-- get a random integer between 3 and 7 - 1)DECLARE @totalviews INTSELECT @totalviews = CAST(RAND() * 5   3 as INT)print(@totalviews)END生成随机的varchar字符串! Z4 c9 M- G5 u5 i
BEGIN-- get a random varchar ascii char 32 to 128DECLARE @videoname VARCHAR(160)DECLARE @length INTSELECT @videoname = ''SET @length = CAST(RAND() * 160 as INT)WHILE @length  0    BEGIN    SELECT @videoname = @videoname   CHAR(CAST(RAND() * 96   32 as INT))    SET @length = @length - 1    ENDprint(@videoname)END最后,随机日期
  i1 Y; a# u6 K: q4 L9 t) e, M3 O2 JBEGIN-- get a random datetime  /- 365 daysDECLARE @uploadtime DATETIMESET @uploadtime = GETDATE()  * 2 * RAND() - 365)print(@uploadtime)END
分享到:
回复

使用道具 举报

回答|共 21 个

苏中人

发表于 2022-3-3 22:39:08 | 显示全部楼层

确实不错,顶先
回复

使用道具 举报

深宫初月夜

发表于 2022-3-5 12:49:00 | 显示全部楼层

支持,赞一个
回复

使用道具 举报

海老藏

发表于 2022-3-6 14:09:19 | 显示全部楼层

确实不错,顶先
回复

使用道具 举报

王小鱼

发表于 2022-3-7 08:40:20 | 显示全部楼层

好,很好,非常好!
回复

使用道具 举报

久久平安好运常伴

发表于 2022-3-8 04:26:51 | 显示全部楼层

垃圾内容,路过为证。
回复

使用道具 举报

丽坤

发表于 2022-3-8 15:35:21 | 显示全部楼层

支持你哈...................................
回复

使用道具 举报

曾盛

发表于 2022-3-8 23:14:42 | 显示全部楼层

纯粹路过,没任何兴趣,仅仅是看在老用户份上回复一下
回复

使用道具 举报

狮子座流星雨

发表于 2022-3-9 04:58:59 | 显示全部楼层

啥玩应呀
回复

使用道具 举报

港琪月饼

发表于 2022-3-9 10:24:57 | 显示全部楼层

啥玩应呀
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

29055 积分
9659 主题
热门推荐