日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

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

SQL Server中的RAND函數的介紹和區間隨機數值函數的實現

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

工作中會遇到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的結果繼續加工(比如其結果乘以某一個值保留整數部分等等)得到要求。很顯然,函數CHECKSUM生成的結果是int數據類型,很容易滿足我們的結果,不過其參數如果固定(表的某一行值相同或一組表達式值相同),那么其結果也是相同的。函數NEWID可以保證結果的唯一,但是其結果是unigueidentifer數據類型的。

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

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

執行后的查詢結果如下:

 SQL Server中的RAND函數的介紹和區間隨機數值函數的實現

從上面的查詢結果看到組合生成的整數數值都是9位數的,平時工作中大多使用的隨機整數值都是不太大的且都是自然數(0和正整數的集合),這就要求限制隨機生成的整數數值。可以使用函數ABS對其結果進行處理得到任意一個自然數。這樣,組合一起來的格式就是這樣的: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視圖 -- 說明: 具體實現闡述  -- 作者: XXX -- 創建: 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 

執行后的查詢結果如下:

SQL Server中的RAND函數的介紹和區間隨機數值函數的實現

生成整數區間內的任意一個隨機整數

上面的視圖定義,我們繼續講解組合函數的進一步封裝。我們先講解如何限制隨機生成的數值,取模運算可以實現生成在指定數值區間內的任意一個數值,例如:獲取區間[3,5]內任意一個數字,我們設為區間的最小值為@intMin:3,最大值為@intMax,則該區間的間隔值為 @intMax - @intMin + 1: 5 - 3 + 1(3),那么針對任意的整數值設為為@intValue,然后對這個間隔值先進行取模運算在加上區間最小值,最后得到的值為: @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 --================================== -- 功能: 獲取區間內的任意一個隨機數值 -- 說明: 具體實現闡述  -- 作者: XXX -- 創建: 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 

執行后的查詢結果如下:

 SQL Server中的RAND函數的介紹和區間隨機數值函數的實現

生成日期區間內的任意一個隨機日期

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

 IF OBJECT_ID(N'dbo.ufn_RandDate', 'FN') IS NOT NULL BEGIN   DROP FUNCTION dbo.ufn_RandDate; END GO --================================== -- 功能: 獲取日期區間內的任意一個隨機日期 -- 說明: 具體實現闡述  -- 作者: XXX -- 創建: 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 

執行后的查詢結果如下:

 SQL Server中的RAND函數的介紹和區間隨機數值函數的實現

 區間隨機數獲取的擴展思考

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

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

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

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

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

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



注:相關教程知識閱讀請移步到MSSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲久草视频| 国产自产视频| 在线视频第一页| 精品区一区二区| 精品视频资源站| 精品一二线国产| 亚洲一区在线观看视频| 欧美日韩中文字幕日韩欧美| 欧美一级久久久久久久久大| 日本a口亚洲| 国产综合成人久久大片91| 中文在线视频观看| 77777_亚洲午夜久久多人| 亚洲乱码中文字幕| 欧洲一级精品| 欧美日韩国产在线看| 91精品久久久久| 不卡在线视频| 国产三级中文字幕| 99久久精品国产成人一区二区| 欧美日韩国产一二三| 国产日韩免费| 亚洲欧洲日韩精品在线| 精品一二线国产| 亚洲社区在线| 成人ww免费完整版在线观看| 亚洲综合在线中文字幕| 精品在线一区二区| 欧美日韩国产中字| 欧美日韩午夜精品| 亚洲免费播放| 亚洲视频资源在线| 一级特黄大欧美久久久| 欧美日韩尤物久久| 99综合视频| 中文字幕欧美日韩| 亚洲三级欧美| 日韩中文字幕亚洲| 91吃瓜在线观看| 精品调教chinesegay| 在线视频日韩欧美| 欧美日韩第一区日日骚| 国产一卡2卡3卡免费网站 | 中文字幕欧美亚洲| 91精品蜜臀在线一区尤物| 欧美日韩精品免费看| 免费国产h视频在线观看86| 91国内在线| 亚洲欧美伊人| 在线观看国产一区| 欧美日韩国产片| 国产一卡2卡3卡4卡网站免费| 国产三级在线观看视频| 欧美日韩中文字幕视频| 91精品国产综合久久久久久漫画 | 色综合天天综合网天天狠天天| 中文在线不卡| 日韩欧美在线精品| 日韩在线a电影| 激情五月综合| 欧美日韩国产不卡在线看| 在线三级av| 欧美国产一级片| 亚洲国产无线乱码在线观看 | 国产黄色小视频| 国产传媒久久久| 中文字幕日韩第一页| 亚洲第一视频| 欧美激情一区二区在线| 欧美三级在线播放| 国产欧美久久久久久久久| 91精品国产91综合久久蜜臀| 国产极品嫩模在线视频一区 | 交视频在线观看国产| 国产www在线观看| 91精品国产自产| 日韩精品国产欧美| 偷窥国产亚洲免费视频| 日本黄色一区二区三区| 国产91久久久久蜜臀青青天草二| 日韩不卡一区二区| 国产免费一级| 一区二区在线看| 色综合天天综合网天天狠天天 | 在线观看国产福利视频| 天天综合天天做| 国产天堂素人系列在线视频| 日韩精品视频免费看| wwww亚洲| 黄色片免费在线| 国产欧美第一页| 国产黄在线看| 精品一区二区三区中文字幕 | 国产成人精品三级| 欧美日韩在线网站| 亚州福利视频| 亚洲福利在线看| 欧美日韩一区二区在线视频| 在线看av的网址| 精品日韩一区二区三区免费视频| 亚洲一区在线观看免费| 国产一区在线精品| 国产视频一区二| 久久精品久久精品亚洲人| 国产欧美久久久精品免费| 欧美日韩免费不卡视频一区二区三区| 亚洲视频在线观看三级| 亚洲永久免费视频| 日韩三级免费观看| 午夜一区二区三区免费| 久久久久久99精品| 欧美三级中文字幕| 亚洲美女视频一区| 精品国产乱码久久久久久蜜臀 | 香蕉视频亚洲一级| 久久精品99久久久久久久久| 久久久91精品国产| 中文字幕日韩精品在线| 日韩欧美一卡二卡| 91精品综合久久久久久| 色综合天天综合网天天狠天天| 中文字幕不卡三区| 国产日韩成人精品| 日韩欧美国产三级| 中文在线а√在线8| 中文字幕无线码一区| 99这里有精品视频| 高清在线一区| 三级精品视频| 麻豆精品视频入口| 日韩精品视频在线看| 亚洲人线精品午夜| 精品一二三区视频| 日韩在线视频网| 亚洲成av人片| 亚洲福利精品| 欧美日韩在线不卡视频| √新版天堂资源在线资源| 精品欧美日韩精品| 日韩精品在线免费看| 欧美啪啪一区| 国产欧美日韩最新| 免费精品国产自产拍在| 激情国产在线| 中文字幕精品在线| av中文在线播放| 日韩中文字幕视频在线| 精品久久九九| 97caopor国产在线视频| 精品久久久91| 在线国产日本| 欧美日韩亚洲国内综合网俺| 欧美日韩国产在线| 伊人国产视频| 国产欧美日韩亚州综合| 中文字幕在线播放一区| 91欧美日韩麻豆精品| 欧美二三四区| 91精品国产综合久久精品| 国产在线高潮| 日韩精品久久久| 日韩久久精品网| 欧美日韩精品高清| 亚洲.国产.中文慕字在线| 亚洲 欧美 中文字幕| 日韩在线视频一区二区三区| 97caopor国产在线视频| 国产三级在线观看视频| 国产一级视频| 日韩精品第一区| 亚欧成人精品| 综合激情国产一区| 91久久精品国产91性色69| 伊人亚洲视频| 一区二区三区四区五区视频在线观看| 国产h片在线观看| 亚洲精品中文字幕乱码三区| 91精品日本| 91精品久久久久久蜜臀| 精品视频999| 欧美91精品| 国产欧亚日韩视频| 午夜伦欧美伦电影理论片| 欧美不卡视频一区| 99精品电影| 大香一本蕉伊线亚洲网| 久久久水蜜桃| 欧美日韩国产页| 精品国产乱码一区二区| 欧美日韩中文字幕一区| 久久视频免费看| 99视频在线看| 日韩免费高清一区二区| 国产一区不卡精品| 欧美日韩在线网站| 青青久在线视频免费观看| 91精品国产网站| 日韩国产欧美在线视频| 欧美三级在线看| 中文字幕 亚洲视频| 欧美日本精品| 五月天久久比比资源色| 精品成人久久久| 中文字幕国产在线| 亚洲综合在线中文字幕| 亚洲一区二区三区精品中文字幕| 国内精品99| 一区二区国产在线| 午夜影院在线观看欧美| 国产黄色在线看| www在线播放| 国产羞羞视频在线播放| 丰满少妇一区| 久久 天天综合| 中文字幕日韩在线观看| 国产999精品在线观看| 日韩三级视频在线看| 91精品久久久久久久久久入口| 91精品国产综合久久精品app| 午夜国产在线视频| 91精品国产自产在线| 久久手机免费观看| 亚洲小说春色综合另类电影| 国产成人精品网址| 日韩欧美视频一区二区三区四区| 欧美日韩在线不卡视频| wwwav在线播放| 午夜一区二区视频| 国产成人精品网址| 久久99久久久久| 99久久精品国产亚洲| 欧美久久久网站| 中文字幕精品www乱入免费视频| 久久精品99国产国产精| 国产www在线观看| 国产成人一二三区| 三级网站免费观看| 欧美日韩午夜精品| 日韩欧美三级| 亚洲免费中文字幕| 欧美日韩性视频| 国产在线二区| 日本精品在线中文字幕| 精品中文在线| 国产欧美日韩在线看| 最近免费中文字幕在线第一页| 亚洲一二三不卡| 国产1卡2卡三卡四卡网站| 久久99精品久久久久子伦| 在线中文字幕视频| 在线亚洲免费| 中文字幕欧美日韩在线不卡| 日韩国产亚洲欧美| 欧美xxxx中国| 一区二区三区精品久久久| 91精品国产调教在线观看| 亚洲福利精品在线| 欧美 日韩 国产在线| 国产成免费视频| 国产久卡久卡久卡久卡视频精品| 欧美日韩不卡在线视频| 国产成人精品综合网站| 欧美日韩国产在线看| 免费视频中文字幕| 国产日韩精品久久久| 精品亚洲永久免费| 精品午夜av| 日韩精品视频免费看| 欧美日韩在线三级| 亚洲三级中文字幕| 国产一二三精品| 不卡在线视频| 99精品视频99| 一本一道综合狠狠老| 国产视频中文字幕在线观看| 国产欧美日韩在线视频| 婷婷精品进入| 国产在成人精品线拍偷自揄拍| 精品日韩在线| 最近中文字幕在线中文高清版| 国产真实乱子伦精品视频| 国产欧美日韩第一页| 日韩不卡av| 国产999在线观看| 欧美日韩国产不卡| 国产手机视频一区二区| 国产视频二区| 亚州福利视频| 老司机久久99久久精品播放免费| wwwwww国产| 欧美日韩免费高清| 午夜视频在线观看一区| 一区二区三区高清在线| 中文字幕99| 狠狠色综合色区| 中文字幕狠狠干| 蜜桃视频中文字幕| 欧美在线日韩精品| 美日韩精品免费视频| 日韩国产欧美亚洲| 色99中文字幕| 亚洲欧美999| 日本精品国语自产拍在线观看| 欧美另类久久久品| 欧美高清一级片在线| 日韩视频中文字幕| 欧美 日韩 国产 在线观看| 二区视频在线观看| 日韩不卡在线播放| 一区在线视频观看| 精品视频在线导航| 欧美日韩亚洲一| 欧美日韩国产亚洲一区| 91精品久久久久久蜜臀| 日韩欧美中文在线视频| 国产成人精品综合网站| 欧美国产一区视频在线观看| 91九色精品视频| 精品视频三区| 日韩免费精品视频| 亚洲黄在线观看| 欧美高清视频一区二区三区| 在线视频色在线| 日韩在线视频二区| 亚洲欧美久久久| 免费国产成人看片在线| 美国av一区二区| 日本不卡高清视频一区| 日本免费在线视频不卡一不卡二| 91精品在线观看入口| 亚洲欧洲国产视频| 欧美日韩国产一二三| 欧美日韩尤物久久| 国产不卡在线观看视频| 亚洲福利视频专区| 69免费视频| 人人做人人澡人人爽欧美| 欧美日韩一级视频| 国产95在线|亚洲| 精品乱子伦一区二区| 欧美日韩精品欧美日韩精品| 亚洲九九精品| 最近免费中文字幕在线第一页| 不卡一区二区三区视频| 精品三区视频| 日本精品在线| 国产最新在线| 久久久水蜜桃| 日韩中文字幕综合| 欧美在线视频第一页| 日韩一级在线免费观看| 日韩在线视频在线观看| 亚洲综合中文字幕在线| 一区在线播放视频| 久久综合九色欧美综合狠狠| 在线欧美日韩精品| 中文字幕日韩在线观看| 欧美日韩在线综合| 欧美日韩国产123区| 91精品国产高清91久久久久久| www日韩在线观看| 日韩高清不卡| 久久视频www| 亚洲男女av一区二区| 中文字幕亚洲二区| 91精品免费在线观看| 中文字幕 日韩 欧美| 国产激情在线播放| 欧美日韩精品在线| 亚洲电影中文字幕在线观看| 国产精品一区二区三区免费观看| 欧美日韩久久久| 91av久久久| 91精品日本| 欧美中文字幕精品| 亚州福利视频| 日韩在线二区| 日韩精品在线免费播放| 日韩欧美国产成人精品免费| 国产一级片网站| 中文天堂在线一区| 91www成人久久| 国产成人中文字幕| 欧美日中文字幕| 在线精品日韩| 日韩在线a电影| 不卡视频一区二区三区| 欧美国产日韩综合| 欧美日韩精品欧美日韩精品一| 国产欧美在线观看| 午夜一区二区三区| 中文字幕亚洲乱码| 欧美日韩精品欧美日韩精品一| 亚洲羞羞网站| 97caopor国产在线视频| 国产不卡视频在线| 国产在线精品国自产拍免费| 日韩av一区二| 日韩一级中文字幕| 国产香蕉精品视频|