12

float としてキャストされた varchar 列をソートする方法が見つかりません。ここに私のSQLリクエストがあります:

SELECT guid, number FROM table ORDER BY 'CAST(number AS FLOAT) DESC'

「数値」列は次のように定義されます。

number  varchar(20) ascii_general_ci

そして、私のテストのためにこの列で定義された値は次のとおりです。

0.00
200.00
20.00
100.00

MySQLはCAST演算子を完全に無視し、GUIDで列をソートします...

MySQL にバグがありますか、それとも何か間違ったことをしましたか?

4

2 に答える 2

37

このトリックを試してください(文字列を数字としてソートするのに役立ちます)-

SELECT guid, number FROM table ORDER BY number * 1 DESC

MySQL が文字列を数値にキャストするのに役立ちます。


別の解決策 -

...CAST(value as DECIMAL(10,5))
于 2012-05-17T10:28:14.240 に答える
-1

GUIDvarchar(40) を使用している場合は、使用できるサイズを指定する必要がありますuuid()

私はそれを使用してそれをしました

select uuid(), number order by 'cast(number as float) desc';

正常に動作しています。これが望ましくない場合は、コード全体を送信できますか?

于 2012-05-17T10:38:27.543 に答える