回答

收藏

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

技术问答 技术问答 455 人阅读 | 0 人回复 | 2023-09-11

为了在视频表中插入随机数据,我想创建一个存储过程。我已经在做了UserProfile记录数据的表生成数据。5 c! [. z9 k/ |2 t: h: \8 c. v3 i9 v1 g
注:用户名在视频表中FK元素。* _6 J- j7 r6 ^; I, K5 L
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               
8 H4 I3 A$ p: p9 n    解决方案:                                                               
. j: ]( Q  w4 o# W- V9 V4 J. Q                                                                即使在SQL生成随机数据并不难。
1 @5 M. b" f4 y8 Z& U例如,从你的userprofile在表中获取随机用户名。) N3 }0 S$ |6 Z$ o4 G8 d
BEGIN-- 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产生随机整数…
' n3 {' \8 N" `7 eBEGIN-- get a random integer between 3 and 7 - 1)DECLARE @totalviews INTSELECT @totalviews = CAST(RAND() * 5   3 as INT)print(@totalviews)END生成随机的varchar字符串: r7 s6 K  Y! P" o( [
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最后,随机日期
4 }0 b" Y3 R9 U( g' a4 H4 b% IBEGIN-- get a random datetime  /- 365 daysDECLARE @uploadtime DATETIMESET @uploadtime = GETDATE()  * 2 * RAND() - 365)print(@uploadtime)END
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则