1、sql產生隨機數sql
使用Rand(),結果是相似於這樣的隨機小數:0.677416415256926函數
eg:oop
SELECT Rand()
下面四種方法的區別(N表明一個隨意的實數):spa
SELECT FLOOR(RAND()*N) ---生成的數是這樣的:12.0 SELECT CAST(FLOOR(RAND()*N) AS INT) ---生成的數是這樣的:12 SELECT CEILING(RAND()* N) ---生成的數是這樣的:12.0 SELECT CAST(CEILING(RAND()* N) AS INT) ---生成的數是這樣的:12
註解:code
前兩種方法:生成的隨機數在0至N-1之間;blog
後兩種方法:生成的隨機數在1至N之間。 class
CEILING函數返回大於或等於給數字表達式的最小整數。變量
FLOOR和CFILING返回的數據類型都與輸入的數字表達式的數據類型相同。隨機數
2、構造數據的時候會用到一次性插入多條數據,SQL Server能夠經過設置while來循環插入多條數據。以下:循環
DECLARE @id int DECLARE @price VARCHAR(6) DECLARE @loopnum int SET @id = 1 SET @price = '1.00' SET @loopnum = 100 WHILE @id <= 100 BEGIN INSERT INTO td_price(id,price) values(@id,@price) SET @id = @id + 1 SET @price = CONVERT(VARCHAR(6),FLOOR(RAND()*9)) + '.' + CONVERT(VARCHAR(6),FLOOR(RAND()*9)) ---構造價格,隨機生成小數
END
拓展,時間按遞增插入數據。經常使用於構造添加數據時使用:
--定義變量 DECLARE @device_id VARCHAR(9) DECLARE @type_id VARCHAR(3) DECLARE @state_time VARCHAR(14) DECLARE @state_value VARCHAR(8) DECLARE @id int DECLARE @loopnum int --初始化變量 SET @device_id = '121108004' SET @type_id = '001' SET @state_time = '20111202000000' SET @state_value = '1.00' SET @id = 1 --循環次數,插入數據 WHILE @id <= 100 BEGIN INSERT INTO TD_DeviceStateWork_2014_copy(device_id,type_id,state_time,state_value) values(@device_id,@type_id,@state_time,@state_value) SET @state_time = replace(replace(replace(CONVERT(varchar,Dateadd(second,15,dbo.funStringToDateTime(@state_time)),120),'-',''),' ',''),':','') SET @state_value = CONVERT(VARCHAR(6),FLOOR(RAND()*9)) + '.' + CONVERT(VARCHAR(6),FLOOR(RAND()*9)) SET @id = @id + 1 END