2016-07-25 19 views
0

私はMySQLのインサートを持っており、INTの値をランダムに生成するためにRANDを使用しています。カラムには、TINYINTを受け取るとDBに挿入されません。どうすれば出力をTINYINTに変換できますか?次のコード例:ランダムな値を挿入するためにRAND()を使用したSQL挿入 - TINYINTへのINSERT?

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

だから私は列がTINYINTなくINTに設定されているので、私は1592危険なステートメントを取得するには、ランダムしかし、作品1と5の間の数値を挿入します。 DBは列のデフォルト値を1に設定します。 TINYINT col?を使用してRANDを使用してランダム値を入力するにはどうすればよいですか?

+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を選択しないでください。

関連する問題