2016-07-25 70 views
0

我有一個MySQL插入和我使用RAND生成一個隨機INT值問題是它不會插入數據庫,因爲列接受TINYINT,我怎樣才能將輸出轉換爲TINYINT。代碼示例以下:使用RAND()插入隨機值的SQL插入 - 插入到TINYINT中?

INSERT INTO table (`col`, `col` VALUES (NULL, CAST(FLOOR(5+RAND()*(1-5)) AS CHAR); 

所以我想隨機插入1和5之間的數字。但它的工作原理,是因爲列設置爲TINYINT,我不INT獲得1592不安全的說法。和DB設置山坳其默認值爲1

如何使用RAND通過使用INSERT INTO一個山坳TINYINT進入一個隨機值?

+2

如果該列是'TINYINT',那麼爲什麼要將它轉換爲'CHAR'? –

回答

3
INSERT INTO table (`col1`, `col2`) 
VALUES 
    (NULL, FLOOR(1 + RAND()*5)); 
+0

謝謝,這有效,但是,我仍然得到不安全的聲明?不太確定那個錯誤是什麼意思? – Speedychuck

+0

這是[已知問題](https://bugs.mysql.com/bug.php?id=49222),它可能會影響到你,也可能不會影響你。 –

+0

不要以爲它真的很重要 – Speedychuck

0

Function FLOOR()已經返回一個數字:

對於準確值數值參數,則返回值的準確值數值型。對於字符串或浮點參數,返回值具有浮點類型。

...所以你不需要把它轉換成任何其他類型。但是,如果這樣做,則不要選擇CHAR作爲目標類型。