https://docs.microsoft.com/en-us/sql/t-sql/functions/rand-transact-sql?view=sql-server-2017
在某一個區間內生成隨機數
https://stackoverflow.com/questions/7878287/generate-random-int-value-from-3-to-6
原理,rand函數會生成一個在0到1之間的隨機float數。
用這個隨機數*區間范圍+最小值,就得到一個區間范圍內的隨機數。然后用round函數去掉小數點后面的。
DECLARE @Random INT; DECLARE @Upper INT; DECLARE @Lower INT SET @Lower = 3 ---- The lowest random number SET @Upper = 7 ---- One more than the highest random number SELECT @Random = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0) SELECT @Random
生成布爾值
https://stackoverflow.com/questions/20597269/how-to-generate-random-boolean-value-in-sql-server-2008
If you are only generating one row, you could use something as simple as:
SELECT CAST(ROUND(RAND(),0) AS BIT)
However, if you are generating more than one row, RAND()
will evaluate to the same value for every row, so please see Martin Smith's answer.
也可以是這樣
SELECT ROUND(RAND(),0)