2016-07-25 63 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作为目标类型。