0

これがクエリです

SELECT * FROM TABLE WHERE id = '7883c2c8e6' AND value> '45'DESC

しかし、何らかの理由で、フィールド値の値が8である行が返されています。チェックしましたが、前後の文字がありません。このフィールドは現在varcharとして設定されています。これが結果に影響を与える可能性があるかどうか疑問に思いましたか?

>の方向を<に変更すると、この行は表示されませんが、確かに逆になりますか?

4

3 に答える 3

2

「8」は「45」より大きいため (アルファベット順)。

値を int にキャストします。

AND convert( value, unsigned) > 45
于 2012-08-07T18:37:48.980 に答える
1

The field is currently set as varchar

それが問題です。テキスト フィールドで比較演算子を使用すると、結果は数値順ではなくアルファベット順に並べ替えられます。

これを回避するには、代わりにフィールドを整数に設定します。

于 2012-08-07T18:38:13.617 に答える
0
SELECT * FROM TABLE 
WHERE id = '7883c2c8e6' AND (value * 1) > 45
order by value DESC
于 2012-08-07T18:37:50.910 に答える