私は 'テキスト'列(テキストデータ型を使用)に0〜2000の数値を持つテーブルを持っています。MySQL MAXは不正確な結果を返します
以下のMySQL関数を実行すると、クエリの結果は2000ではなく990になります。なぜこのような理由が考えられるでしょうか?事前に
ありがとう:
SELECT max(text) FROM table
私は 'テキスト'列(テキストデータ型を使用)に0〜2000の数値を持つテーブルを持っています。MySQL MAXは不正確な結果を返します
以下のMySQL関数を実行すると、クエリの結果は2000ではなく990になります。なぜこのような理由が考えられるでしょうか?事前に
ありがとう:
SELECT max(text) FROM table
最初にテキストフィールドをunsigned int
に変換します。
select MAX(cast(`text`as unsigned)) from `table`;
ありがとうございました。それは治療を働いた! :) –
あなたはmax()
にそれを渡す前に数にtext
の種類を変換する必要があります。例えば
:ないtext
内のすべての値が数値であればselect max(cast(text as integer)) from table
これが失敗することがあります。
「間違った」結果ではありません。 Per the documentation:
MAX()は文字列引数をとることがあります。そのような場合は、 の最大文字列値を返します。
「990」は、文字列のときは「2000」の後に来ます。
良い点は、テキスト値の正しいMAX結果です。 :) – Chris
申し訳ありませんが、私はそれが '間違った'ではないことを知っていました。どうすればこの問題を解決できますか? –
は、テキストタイプの列を設定しているので、彼らは(990が2000よりも大きい)。あなたは、数値型でそれらを比較する必要がありますが、SELECT MAX(テキストのようにそれを行うことができますテキストタイプで比較されている* 1 )FROM table
'max'を使用する前に' text'列を数値型に変換してみてください。 – Chris
どの列にMaxを適用するかは、この列は整数または浮動小数点でなければなりません。 –