2016-04-01 13 views
1

私は 'テキスト'列(テキストデータ型を使用)に0〜2000の数値を持つテーブルを持っています。MySQL MAXは不正確な結果を返します

以下のMySQL関数を実行すると、クエリの結果は2000ではなく990になります。なぜこのような理由が考えられるでしょうか?事前に

ありがとう:

SELECT max(text) FROM table 
+0

'max'を使用する前に' text'列を数値型に変換してみてください。 – Chris

+0

どの列にMaxを適用するかは、この列は整数または浮動小数点でなければなりません。 –

答えて

2

最初にテキストフィールドをunsigned intに変換します。

select MAX(cast(`text`as unsigned)) from `table`; 
+0

ありがとうございました。それは治療を働いた! :) –

0

あなたはmax()にそれを渡す前に数にtextの種類を変換する必要があります。例えば

:ないtext内のすべての値が数値であればselect max(cast(text as integer)) from table

これが失敗することがあります。

0

「間違った」結果ではありません。 Per the documentation

MAX()は文字列引数をとることがあります。そのような場合は、 の最大文字列値を返します。

「990」は、文字列のときは「2000」の後に来ます。

+0

良い点は、テキスト値の正しいMAX結果です。 :) – Chris

+0

申し訳ありませんが、私はそれが '間違った'ではないことを知っていました。どうすればこの問題を解決できますか? –

0

は、テキストタイプの列を設定しているので、彼らは(990が2000よりも大きい)。あなたは、数値型でそれらを比較する必要がありますが、SELECT MAX(テキストのようにそれを行うことができますテキストタイプで比較されている* 1 )FROM table

関連する問題