0

Mysql データベースの 2 つの値を比較する際に問題が発生し、最も低い値が表示されます。

たとえば、私はこれを持っています:

value1 = 23.4
value2 = 4.479

私はこれを試しました:

ORDER BY CAST(column AS SIGNED) ASC

しかし、それは機能していません

繰り返しますが、フィールド タイプは VARCHAR です。

私が探している結果は、4.479 ではなく 23.4 である必要があります。

助言がありますか?

4

3 に答える 3

7

簡単に言えば、価格を保存している場合は、列を DECIMAL に変更する必要があります。VARCHAR はアルファベット順になります。MySQLの数値型について読んでください。

ALTER TABLE your_table MODIFY COLUMN price DECIMAL(10,3);
于 2013-01-25T20:22:28.117 に答える
0

かなりコストのかかる回避策は、並べ替えの前にすべての値を 10 進数にキャストすることです。

SELECT name, price FROM test ORDER BY CAST(price AS DECIMAL(20, 10)) ASC LIMIT 1

DECIMAL 制限が、列内のすべての値を正しくキャストするのに十分であることを確認してください。

于 2013-01-25T20:52:02.463 に答える
0

DECIMAL に CAST すると機能します。

select * from tablename order by cast(price as decimal);

+--------+-------+
| name   | price |
+--------+-------+
| nail   | 0.95  |
| glue   | 9.23  |
| hammer | 45.12 |
+--------+-------+
于 2013-01-25T20:54:06.250 に答える