首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 指定欄位插入隨機數實戰:RAND()、CEILING、CAST 組合更新點擊量/瀏覽量

     編輯:MySQL 資料庫相關知識

測試/演示環境需為現有資料注入隨機數值(如點擊量、瀏覽量)。本文提供 RAND() + CEILING/FLOOR + CAST 組合拳,含完整 SQL 範例與步驟解析。

常用模板

-- 產生 500,000 ~ 1,000,000 隨機整數
UPDATE `table_name` SET `field_name` = CEILING(RAND() * 500000 + 500000) WHERE (條件);

-- 依現有值按比例縮放(如點擊量 * 1%)
UPDATE `table_name` SET click = click * 0.01 WHERE classid = '2' AND click > 2000;

步驟解析

1. RAND() 基礎

SELECT RAND();  -- 0.0000 ~ 1.0000 浮點數

RAND() 輸出範例

2. 擴大範圍

SELECT RAND() * 10;  -- 0.0 ~ 10.0

3. 取整:CEILING / FLOOR / ROUND

SELECT CEILING(RAND() * 10);   -- 1-10 整數(向上取整)
SELECT FLOOR(RAND() * 10);     -- 0-9 整數(向下取整)
SELECT ROUND(RAND() * 10);     -- 0-10 整數(四捨五入)

4. 類型轉換:CAST

SELECT CAST(RAND() * 10 AS SIGNED);  -- 顯式轉整數
-- 支援類型:BINARY, CHAR, DATE, DATETIME, DECIMAL, SIGNED, UNSIGNED, TIME

完整更新範例

-- 為 storm_effect_info 表 id=13 的 fhtp 欄位寫入 0-10 隨機整數
UPDATE storm_effect_info s
SET s.fhtp = (SELECT CAST(RAND() * 10 AS SIGNED) AS rand)
WHERE s.id = 13;

擴展:批量不同範圍

-- 依分類注入不同量級隨機數
UPDATE products SET view_count = CASE
  WHEN category = 'hot' THEN CEILING(RAND() * 90000 + 10000)   -- 10k-100k
  WHEN category = 'normal' THEN CEILING(RAND() * 9000 + 1000)   -- 1k-10k
  ELSE CEILING(RAND() * 900 + 100)                              -- 100-1k
END;

避坑提醒

  • RAND() 在單條 SQL 中**每行重新計算**,滿足逐行不同隨機數需求
  • 大表更新建議分批 LIMIT 10000 避免長事務鎖表
  • 生產環境**嚴禁**直接更新業務計數器,僅限測試/演示/資料清洗腳本
  • 需可重現隨機序列:RAND(seed) 固定種子

三行代碼搞定隨機注入,測試資料準備不再手工造數。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved