Ich habe Nummern als Varchar in der Tabelle gespeichert (ich weiß, es ist eine schlechte Praxis, aber die Daten kommen nicht von mir), und ich möchte sie mit 25.4, Runde zu Integer (so 9.448 sollte 10 sein), und speichern Sie als tinyint (2) unsigniert. Wenn der Wert von varchar 240 ist, bekomme ich nach der Division 9 was falsch ist. Wenn ich CAST
240 bis DECIMAL
(ich muss dezimal verwenden, weil manchmal sind sie wie 240,5) dann gibt es korrekte Ergebnis nach der Division (aber ich muss ROUND
es 4x mit 3, 2, 1, 0 Dezimalstellen), aber ich kann die Tabelle aktualisieren, die mit diesem Befehl:MySql Nummer als Text Division
UPDATE `table` SET dz = ROUND(ROUND(ROUND(ROUND(CAST(REPLACE(d, ',', '.') AS DECIMAL (6,1))/25.4, 3), 2), 1), 0);
, weil ich die folgenden Fehlermeldung bekommen, was ich verrückt:
Falscher Dezimalwert: ‚0‘ für die Spalte ‚‘ in Zeile -1
weil in der wählen Sie es funktioniert:
SELECT DISTINCT d, ROUND(ROUND(ROUND(ROUND(CAST(REPLACE(d, ',', '.') AS DECIMAL (6,1))/25.4, 3), 2), 1), 0) AS dz FROM `table`;
was ist hier los ...? Danke im Voraus!