SQL -- 產生隨機數

mysql產生隨機數的方法RAND()
RAND() 產生0~1之間的隨機數,例如mysql

輸入圖片說明

在mysql中,當處理數值時,例如:存在一個float型數值3.86,若是咱們只想取整數部分,則能夠使用mysql的floor函數。例如算法

輸入圖片說明

如今工程需求產生一個17位純數字char型數據,分析以下
1>17位的純數字範圍10000000000000000~99999999999999999
2>產生一個0~1之間的隨機數,如:0.12345678901234567
3>咱們取上述隨機數的臨界值,即0或者1,則17位隨機數的範圍0~99999999999999999
4>咱們要保證位數爲17位,所以低臨界值的最小數據應該是10000000000000000
5>很容易想到SQL應該這麼寫,獲得的結果以下sql

select 10000000000000000 + RAND()*(99999999999999999-10000000000000000)

輸入圖片說明
6>取整數部分,SQL以下數據庫

SELECT FLOOR(10000000000000000+RAND()*(99999999999999999-10000000000000000))

結果圖以下函數

輸入圖片說明
7>很明顯,在mysql中,17位的純數字確定不能爲int,如上工程,我設置爲char型,第6>中得出的數據若是直接插入到數據庫表中,則會出現 4.045002932702194e16 這種數據,所以咱們須要將其轉換成char型,採用字符串拼接函數,SQL以下code

SELECT CONCAT(FLOOR(10000000000000000+RAND()*(99999999999999999-10000000000000000)),'')

輸入圖片說明
8>總結:須要產生X位的隨機數的算法圖片

SELECT FLOOR(X位數據的最小值+RAND()*(X位數據的最大值-X位數據的最小值))

注意:若是X的位數大於11,則須要按照如上將數據由int轉成char型。字符串

相關文章
相關標籤/搜索