亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

SQL Server中的RAND函數的介紹和區(qū)間隨機數值函數的實現(xiàn)

2024-08-31 01:03:34
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了SQL Server中的RAND函數的介紹和區(qū)間隨機數值函數的實現(xiàn) 的相關資料,需要的朋友可以參考下
 

工作中會遇到SQL Server模擬數據生成以及數值列值(如整型、日期和時間數據類型)隨機填充等等任務,這些任務中都要使用到隨機數。鑒于此,本文將對SQL Server中隨機數的使用簡單做個總結 。

T-SQL 隨機有關的三個函數

   RAND([seed] 此函數生成從0到1之間隨機 float 值(詳細說明查看https://technet.microsoft.com/zh-cn/library/ms177610(v=sql.90).aspx)。

    CHECKSUM ( * | expression [ ,...n ] ) 此函數生成按照表的某一行或一組表達式計算出來的int校驗和值,CHECKSUM 用于生成哈希索引(詳細說明查看https://technet.microsoft.com/zh-cn/library/ms189788(v=sql.90).aspx)。

    NEWID ( ) 此函數生成 uniqueidentifier 類型的唯一值(詳細說明查看https://technet.microsoft.com/zh-cn/library/ms190348(v=sql.90).aspx)。

生成任意一個隨機數值(如整數、日期和時間數據類型)

    如果獲得任意一個隨機整數值?函數RAND生成的結果是float數據類型的,顯然很難滿足要求,不過可以通過對函數RAND的結果繼續(xù)加工(比如其結果乘以某一個值保留整數部分等等)得到要求。很顯然,函數CHECKSUM生成的結果是int數據類型,很容易滿足我們的結果,不過其參數如果固定(表的某一行值相同或一組表達式值相同),那么其結果也是相同的。函數NEWID可以保證結果的唯一,但是其結果是unigueidentifer數據類型的。

    從以上三個函數的結果值分析:函數RNAD和CHECKSUM的結果是能獲得整數數值的。如果我們將函數NEWID的結果值作為函數CHECKSUM的參數,那么其每次生成的結果值都是不一樣的int數據類型的數值。以下T-SQL代碼如下:

SELECT CHECKSUM(NEWID()) AS CheckSumValue, CHECKSUM(NEWID()) AS CheckSumValue2;GO

執(zhí)行后的查詢結果如下:

 SQL Server中的RAND函數的介紹和區(qū)間隨機數值函數的實現(xiàn)

從上面的查詢結果看到組合生成的整數數值都是9位數的,平時工作中大多使用的隨機整數值都是不太大的且都是自然數(0和正整數的集合),這就要求限制隨機生成的整數數值??梢允褂煤瘮礎BS對其結果進行處理得到任意一個自然數。這樣,組合一起來的格式就是這樣的:ABS(CHECKSUM(NEWID()))。為了便于使用便于使用我們通過將其封裝到函數中,但是函數NEWID又不能在函數中使用,那我們就要考慮其他的方式:將函數NEWID封裝在單列單行的視圖中。其定義視圖的T-SQL代碼如下:

 IF OBJECT_ID(N'dbo.vRandomGuid', 'V') IS NOT NULL BEGIN   DROP VIEW dbo.vRandomGuid; END GO --================================== -- 功能: 隨機Guid視圖 -- 說明: 具體實現(xiàn)闡述  -- 作者: XXX -- 創(chuàng)建: yyyy-MM-dd -- 修改: yyyy-MM-dd XXX 修改內容描述 --================================== CREATE VIEW dbo.vRandomGuid   --$Encode$-- AS   SELECT RandomGuid = NEWID(); GO 調用該視圖的T-SQL代碼如下: SELECT TOP RandomGuid FROM dbo.vRandomGuid; GO 

執(zhí)行后的查詢結果如下:

SQL Server中的RAND函數的介紹和區(qū)間隨機數值函數的實現(xiàn)

生成整數區(qū)間內的任意一個隨機整數

上面的視圖定義,我們繼續(xù)講解組合函數的進一步封裝。我們先講解如何限制隨機生成的數值,取模運算可以實現(xiàn)生成在指定數值區(qū)間內的任意一個數值,例如:獲取區(qū)間[3,5]內任意一個數字,我們設為區(qū)間的最小值為@intMin:3,最大值為@intMax,則該區(qū)間的間隔值為 @intMax - @intMin + 1: 5 - 3 + 1(3),那么針對任意的整數值設為為@intValue,然后對這個間隔值先進行取模運算在加上區(qū)間最小值,最后得到的值為: @intValue % (@intMax - @intMin + 1) + @intMin。如果@intValue為8,則結果值為5;如果@intValue為9,則結果值為3;如果@intValue為10,則結果值為4……

    針對以上的分析我們封裝的T-SQL代碼如下:

 IF OBJECT_ID(N'dbo.ufn_RandNum', 'FN') IS NOT NULL BEGIN   DROP FUNCTION dbo.ufn_RandNum; END GO --================================== -- 功能: 獲取區(qū)間內的任意一個隨機數值 -- 說明: 具體實現(xiàn)闡述  -- 作者: XXX -- 創(chuàng)建: yyyy-MM-dd -- 修改: yyyy-MM-dd XXX 修改內容描述 -- 調用: SELECT dbo.ufn_RandNum(, ); --================================== CREATE FUNCTION dbo.ufn_RandNum (   @intMin INT,      -- 隨機數值的最小值   @intMax INT        -- 隨機數值的最大值 ) RETURNS INT   --$Encode$-- AS BEGIN     SET @intMin = ISNULL(@intMin, );   SET @intMax = ISNULL(@intMax, );   DECLARE @guidValue AS UNIQUEIDENTIFIER;   SELECT TOP @guidValue = RandomGuid   FROM dbo.vRandomGuid;   RETURN ABS(CHECKSUM(@guidValue)) % (@intMax - @intMin + ) + @intMin; END GO 

調用以上函數的T-SQL代碼如下:

 SELECT dbo.ufn_RandNum(, ) AS RandNum, dbo.ufn_RandNum(, ) AS RandNum; GO 

執(zhí)行后的查詢結果如下:

 SQL Server中的RAND函數的介紹和區(qū)間隨機數值函數的實現(xiàn)

生成日期區(qū)間內的任意一個隨機日期

    那么我們繼續(xù)講解 獲取指定區(qū)間內的任意一個隨機日期,不過我們要使用日期和時間的兩個函數:DATEADD和DATEDIFF。使用DATEDIFF計算出日期區(qū)間的間隔值,同上的思路我們計算得到的一個隨機整數值,然后通過DATEADD得到我們期望的一個隨機日期。封裝函數的T-SQL代碼如下:

 IF OBJECT_ID(N'dbo.ufn_RandDate', 'FN') IS NOT NULL BEGIN   DROP FUNCTION dbo.ufn_RandDate; END GO --================================== -- 功能: 獲取日期區(qū)間內的任意一個隨機日期 -- 說明: 具體實現(xiàn)闡述  -- 作者: XXX -- 創(chuàng)建: yyyy-MM-dd -- 修改: yyyy-MM-dd XXX 修改內容描述 -- 調用: SELECT @dtmRand = dbo.ufn_RandDate('--', '--'); --================================== CREATE FUNCTION dbo.ufn_RandDate  (   @dtmMin DATETIME,  -- 隨機日期的最小值   @dtmMax DATETIME  -- 隨機日期的最大值 ) RETURNS DATETIME   --$Encode$-- AS BEGIN   SET @dtmMin = ISNULL(@dtmMin, '--');   SET @dtmMax = ISNULL(@dtmMax, '--');   DECLARE @guidVue AS UNIQUEIDENTIFIER;   SELECT TOP @guidVue = RandomGuid    FROM dbo.vRandomGuid;   -- 可以將HOUR換為DAYS   RETURN DATEADD(HOUR, (ABS(CHECKSUM(@guidVue)) % ( + DATEDIFF(HOUR, @dtmMax, @dtmMin))), @dtmMin); END GO 

調用以上函數的T-SQL代碼如下:

 SELECT dbo.ufn_RandDate('--', '--') AS RandDate, dbo.ufn_RandDate('--', '--') AS RandDate; GO 

執(zhí)行后的查詢結果如下:

 SQL Server中的RAND函數的介紹和區(qū)間隨機數值函數的實現(xiàn)

 區(qū)間隨機數獲取的擴展思考

    無論是獲取數值區(qū)間內的隨機數值,還是日期區(qū)間內的隨機日期,我們都使用了視圖vRandomGuid。如果有一個連續(xù)的數值序列,我們通過查詢這個數值序列,結合我們的區(qū)間數值和隨機排序,也可以實現(xiàn)以上的效果。

    假設該數值序列為SeqDataTable(Num INT),數值區(qū)間[@intMin,@intMax],那么該數值區(qū)間任意一個隨機數值的T-SQL代碼如下:

 SELECT TOP Num FROM dbo.SeqDataTable WHERE Num BETWEEN @intMin AND @intMax ORDER BY NEWID() ASC; 

    當然也可以利用以上的數字序列SeqDataTable(Num INT),日期區(qū)間[@dtmMin,@dtmMax],那個該數字區(qū)間任意一個隨機日期的T-SQL代碼如下:

 SELECT TOP DATEADD(DAY, Num, @dtmMin) FROM dbo.SeqDataTable WHERE Num BETWEEN AND DATEDIFF(DAY, @dtmMax, @dtmMin) ORDER BY NEWID() ASC; 

 注意:以上代碼無法執(zhí)行成功的,也算是偽代碼的。



注:相關教程知識閱讀請移步到MSSQL教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
韩国av一区二区三区四区| 亚洲6080在线| 国产精品福利在线观看播放| 欧美一级淫片a免费视频| 99视频国产精品免费观看| 精品999在线播放| 精品久久久久久久久久久久久久| 精品无人区卡一卡二卡三乱码免费卡| 91精品久久久久久久久久另类| 精品96久久久久久中文字幕无| 国产麻豆天美果冻无码视频| 欧美videofree性高清杂交| 国产免费av一区| av免费看大片| 成人免费av资源| 久久久久久国产三级电影| 亚洲视频中文字幕在线观看| 久久久精品福利| 日韩精品人妻中文字幕有码| 老司机福利在线视频| 亚洲成av人片在www色猫咪| 久久综合88| 日本免费黄色| 久久在线视频免费观看| 九九热免费在线视频| 欧美极品欧美精品欧美视频| 精品久久久中文字幕人妻| 丝袜美腿一区二区三区动态图| 欧美ab在线视频| 综合中文字幕| 日本黄色免费观看| 欧美黑人巨大精品一区二区| 日批视频免费播放| 国产成人免费视频网站高清观看视频| 九九热精品视频在线播放| 国产亚洲精品bv在线观看| 久久国产精品无码网站| 丝袜美腿亚洲一区二区| 超碰96在线| 亚洲免费视频一区二区三区| 伊人天天久久大香线蕉av色| 黄色av免费| 少妇av一区二区| 国产精品亚洲一区二区三区妖精| 国产福利一区二区三区| 欧美体内谢she精2性欧美| 色一情一区二区三区| 久久精品视频亚洲| 日韩亚洲在线视频| 欧美激情精品久久久久久蜜臀| 被黑人猛躁10次高潮视频| 高清成人在线观看| 俄罗斯精品一区二区| 尤物在线观看视频| www视频完整版| 4444kk亚洲人成电影在线| 日韩中文字幕在线视频| 精品成人佐山爱一区二区| 干b视频在线观看| 手机版av在线| 五月激情婷婷网| 97在线免费视频| 午夜性色一区二区三区免费视频| 性欧美在线看片a免费观看| www.日韩不卡电影av| 日本在线电影一区二区三区| 国产成人无码a区在线观看视频| 亚洲第一精品自拍| 欧美男人的天堂一二区| 成人免费看视频网站| 精品无码av一区二区三区| 男人通一通女人的下水道| 成人无码精品1区2区3区免费看| 在线免费观看羞羞视频一区二区| 亚洲午夜18毛片在线看| 久久麻豆精品| 亚洲精品va| freehdxxxx护士| 亚洲天堂网在线观看视频| 欧美成人免费全部观看天天性色| 久久网站最新地址| 高清无码视频直接看| 色阁综合伊人av| 亚洲天堂久久久久久久| 四虎久久影院| 人人人妻人人澡人人爽欧美一区| 日本a视频在线观看| 欧美成人三级伦在线观看| 免费色片视频| 在线观看免费高清视频97| 99久热re在线精彩视频| 色婷婷av在线| 成年人在线看片| 亚洲国产成人va在线观看天堂| 欧美一区2区三区4区公司二百| 性欧美大战久久久久久久久| 国产精品久久久久久久乖乖| 日韩中文字幕视频在线观看| 亚洲午夜精品网| 亚洲欧洲国产视频| 天天影视欧美综合在线观看| av一区二区三| 国产1区2区3区精品美女| 污片视频在线免费观看| 欧美人与性囗牲恔配| 99re5久久在热线播放| 男女羞羞视频在线观看| 国产在线精品一区| 欧美另类在线播放| 你懂的一区二区| 懂色av粉嫩av蜜乳av| 精品中文字幕在线观看| 日韩制服一区| 91美剧网在线播放| 国产一区二区三区视频免费| 日韩三级久久| 99精品久久99久久久久| 日韩成人伦理电影在线观看| 91人人爽人人爽人人精88v| 91欧美精品午夜性色福利在线| 色综合天天视频在线观看| 美女av免费在线观看| 亚洲一区二区三区| 国产网站免费看| 在线电影av不卡网址| 久久爱www久久做| 中文字幕丰满孑伦无码专区| 免费中文字幕在线| 日韩激情免费| 在线视频一区二区三区在线播放| 精品国产_亚洲人成在线| 麻豆精品在线视频| 国产精品视频在线观看| www高清在线视频日韩欧美| 国产中文字幕二区| 国产一级片网址| 亚洲激情视频在线播放| 欧美xxx性| 在线看免费毛片| 91精品啪在线观看国产| 激情aⅴ欧美一区二区欲海潮| 99re91这里只有精品| 国产亚洲精品超碰| 日韩一级完整毛片| 好吊一区二区三区视频| 免费在线看大片无需流量| 亚洲先锋成人| 国产偷人爽久久久久久老妇app| 国产精品jizz在线观看老狼| 欧美高清hd| 亚洲永久在线| 夜夜爽av福利精品导航| 哥也色在线视频| 麻豆91在线播放免费| 成人女保姆的销魂服务| 久久成人在线| 国产日韩av在线播放| 国产精品免费入口| 色婷婷综合网| 美女福利视频一区二区| 亚洲精品在线视频免费| 精品一区电影国产| 3d动漫啪啪精品一区二区免费| 人妻熟人中文字幕一区二区| 91九色在线观看| 国产理论电影在线| 欧美性老头oldtight| 亚洲一区精品电影| 亚洲天天在线日亚洲洲精| 国语对白做受69按摩| 波多野结衣毛片| 久久中文免费视频| 小泽玛利亚一区二区免费| 成人h精品动漫一区二区三区| 最近国产精品视频| 国产不卡123| 欧美亚日韩国产aⅴ精品中极品| 亚洲精品综合久久中文字幕| 91综合久久一区二区| 天天综合精品| 国产精品911| 国产欧美精品在线播放| 国产精品高潮呻吟视频| 亚洲成人av在线| 国产igao激情在线入口| 亚洲人成小说| 91欧美国产| 91尤物国产福利在线观看| 一色桃子av在线| 乱妇乱女熟妇熟女网站| 在线免费看黄视频| 97看剧电视剧大全| 国产精品久久久久久久久久10秀| 亚洲成人激情在线观看| 91电影91视频| 欧美一级淫片| 欧美一级免费观看| 丰满饥渴老女人hd| 桃花视频大全不卡免费观看网站| 欧美在线免费观看| 在线欧美一区二区| 日韩av一区二区在线影视| 亚洲大尺度视频在线观看| 911精品美国片911久久久| 成人动漫一区二区| 国产亚洲成av人片在线观黄桃| 亚洲乱码国产乱码精品精98午夜| 国产精品啪视频| 国产视频三区四区| 国产欧美日韩精品在线观看| 麻豆一区二区三区精品视频| 丁香花在线影院观看在线播放| 青青在线免费观看视频| 天天摸天天碰天天爽天天弄| 成人国产精品一区二区网站| 鲁大师成人一区二区三区| 成年人看的羞羞网站| 亚洲欧美日韩一区二区| 国产成人福利片| 欧美视频精品在线观看| 日本黄色免费在线观看| 亚洲二区在线播放| 亚洲三级视频网站| 清纯唯美亚洲综合| 亚洲精品乱码久久久久久蜜桃91| 美女精品网站| 国产精品久在线观看| eeuss国产一区二区三区| 国产欧美日韩影院| 国产露脸91国语对白| 日韩激情av在线免费观看| 夜夜嗨av禁果av粉嫩avhd| 少妇太紧太爽又黄又硬又爽| 国产精品欧美亚洲777777| 成人做爰www免费看视频网站| 亚洲欧洲美洲av| 91高清国产视频| 在线电影欧美成精品| 激情内射人妻1区2区3区| 精品国产污污免费网站入口| 91看片淫黄大片91| 青青草精品视频在线| 三级a在线观看| 天天干狠狠干| 麻豆久久久久久久久久| 国产成人综合一区二区三区| 蜜桃极品自拍av| 中文字幕在线播放不卡一区| 免费在线看黄网址| 国产精品亚洲一区二区在线观看| 午夜欧美精品| 国产1区2区在线观看| 五十路亲子中出在线观看| 成年人免费在线播放| 精品一区二区久久久久久久网站| 成人日韩在线电影| 久久精品成人动漫| 日韩av在线免费观看不卡| 一区二区三区在线免费观看视频| 91黑人精品一区二区三区| 亚洲色欲色欲www在线观看| 成人黄色毛片| 一区二区欧美在线观看| 免费看日批视频| 无套内谢的新婚少妇国语播放| 视频一区中文字幕| 顶级嫩模精品视频在线看| 东北少妇不带套对白| 成人高清在线视频| 欧美精品videossex性护士| 91午夜在线播放| 亚洲国产精品资源| 在线观看av不卡| 99蜜桃臀久久久欧美精品网站| 日韩美女视频一区二区在线观看| 黄页大全在线免费观看| 蜜桃久久精品乱码一区二区| 欧洲天堂在线观看| 精品一区二区国产| 精品国产亚洲一区二区三区在线观看| av中文资源在线| 色先锋av资源在线| 特黄国产免费播放| 亚洲乱码国产乱码精品精| 日韩精品一区二区三区老鸭窝| 国产伦精品一区二区三区四区免费| av网站免费观看| 亚洲久本草在线中文字幕| 日批视频在线免费看| 国产成人精品亚洲精品色欲| 欧美18—19性高清hd4k| 日本高清黄色片| 精品资源在线| 国产视频在线免费观看| 久久精品这里热有精品| 欧美精品国产| 欧美日韩欧美| 91精品久久久久久| 国产日本欧洲亚洲| 娇妻高潮浓精白浆xxⅹ| 北岛玲日韩精品一区二区三区| 免费成人在线观看| 欧美黑人猛交| 亚洲男人都懂的| 国产午夜电影| 久久久久久欧美精品se一二三四| 亚洲欧美日本一区| 国产伦精品一区二区三区视频黑人| 麻豆精品国产传媒| 99精品视频在线观看播放| 欧美aaa大片视频一二区| 亚洲欧美激情一区二区三区| 国产精品嫩草视频| 国产 日韩 欧美在线| 中文字幕理伦片免费看| 欧美日溪乱毛片| 日韩欧美手机在线| 岛国最新视频免费在线观看| 天天草夜夜骑| 国产亚洲精品精品国产亚洲综合| 在线国产成人影院| 99国内精品久久| 51精品免费网站| 日韩中字在线| 美女视频网站久久| 日韩激情网站| 精品国产电影一区| 欧美日产国产成人免费图片|