如何用SQL為每一行均產生乙個隨機數

2021-09-10 12:00:22 字數 595 閱讀 2202

關鍵在於使用newid()得到乙個基礎的隨機值

再使用checksum()得到乙個數字型

再作為種子值使用rand()得到0~1之間的double型別值(18)

再就簡單了,看各自的需求

例如,如果是獲取位數不限的隨機數(最高16位,太多的話值後面就都是0,可以通過兩個隨機數連線),就乘以最高位數的10倍值,再通過ceiling()取整

select cast(ceiling(rand(checksum(newid()))*10) as int) as rndnum from 表名
如果獲取位數一定的隨機數(最高16位,太多的話值後面就都是0,可以通過兩個隨機數連線),因為rand()值可能得到的值非常小,位數不夠

簡單一點的做法就是直接加上10000000(幾位就幾個0),再取前幾位

select left(cast(ceiling(rand(checksum(newid()))*1000000) as int)+100000,6) as rndnum from 表名
這樣基本能夠滿足需求了,至於更複雜的限定值範圍內的等等,建議使用函式處理,全部寫在語句裡面,閱讀性太差

如何用一行命令讓 Systemd 崩潰

以任何乙個使用者執行下面的命令列,都會讓systemd崩潰 1notify socket run systemd notify systemd notify 執行這行命令後,pid 1將在系統呼叫pause這裡掛起,再也不能啟動或停止後台程式。inetd style服務不再接受任何連線。你也不能乾淨...

python 刪除離群值(每一行為一類資料)

刪除有多行字串的json檔案中的離群值 def processhold eachsubject,directory,newfile filename cmudatacol hold subject.json format eachsubject 原檔案 with open filename,r as...

SQL2005實現迴圈每一行做一定操作。

要對乙個表的每一行做出比較複雜的操作,一般會想到用游標,今天想到使用sql2005中的新函式row number 和while迴圈來對每一行執行操作。示例 如下 department no asdepartmentno,row number over order bydepartment no as...