2016-07-25 3 views
0

Ich habe eine MySQL-Einfügung und ich verwende RAND, um eine zufällige INT Wert das Problem zu erzeugen, wird es nicht in die Datenbank einfügen, da die Spalte akzeptiert TINYINT, Wie kann ich die Ausgabe zu TINYINT konvertieren. Code-Beispiel unten:SQL einfügen mit RAND() zum Einfügen von Zufallswert - INSERT in TINYINT?

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

Deshalb möchte ich eine Zahl zwischen 1 und 5 zufällig einzusetzen, die jedoch funktioniert, weil die Spalte auf TINYINT gesetzt ist und nicht INT i erhalten 1.592 unsichere Aussage. Und die Datenbank setzt die Spalte auf den Standardwert 1.

Wie kann ich RAND verwenden, um einen zufälligen Wert einzugeben, indem Sie eine INSERT INTO a TINYINT Spalte verwenden?

+2

Wenn die Spalte 'TINYINT' ist, warum werfen Sie sie dann auf' CHAR'? –

Antwort

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

Danke, das hat aber funktioniert, bekomme ich trotzdem eine unsichere Aussage? nicht wirklich sicher, was dieser Fehler bedeutet? – Speedychuck

+0

Dies ist ein [bekanntes Problem] (https://bugs.mysql.com/bug.php?id=49222), das Sie betreffen kann oder nicht. –

+0

Dont denke, es ist wirklich wichtig – Speedychuck

0

Function FLOOR() bereits eine Reihe zurück:

Für genaue numerische Argumente, hat der Rückgabewert einen genauen Wert numerischen Typ. Bei String- oder Gleitkomma-Argumenten hat der Rückgabewert einen Fließkommatyp.

... also müssen Sie es nicht auf einen anderen Typ umwandeln. Wenn Sie dies jedoch tun, wählen Sie nicht CHAR als Zieltyp.