0

みなさん、MySQL クエリがあります

SELECT * FROM `product` WHERE `price` BETWEEN '60' AND '999' ORDER BY `product` DESC LIMIT 12 OFFSET 0

これは明らかに、価格が 60 ~ 999 の 12 個の製品を選択します。これにより、行が正しく表示されます。

ただし、このクエリのように制限を増やすと

SELECT * FROM `product` WHERE `price` BETWEEN '60' AND '1000' ORDER BY `product` DESC LIMIT 12 OFFSET 0

行は表示されません。なぜこれが起こるのですか?「価格」フィールドは浮動小数点型フィールドです

4

3 に答える 3

2

フィールド タイプは文字ではなく数値であるため、' を削除します。

于 2010-11-18T11:31:21.903 に答える
0

60、999、および1000は、floatまたはintではなくcharとして扱われます。

999で動作する理由は、比較がASCII文字で行われるためです。

1000の場合、6は1よりも高い値であるため、ASCIIが6から1の間で始まる価格の行は取得されません。

于 2010-11-18T11:32:41.387 に答える
0

'60'あなたはと'1000'をキャラクターとして扱っています。使用番号:

where `price` between 60 and 1000

varchar 文字列を使用する場合、varcharの'60' および '1000' '1000' '60'` に一致する行はありません。betweencondition, sinceis smaller than

'999'の間の範囲の価格がおそらくいくつかあるため、それは機能していました。'6''9'

mysql> select '60' < '9';
+------------+
| '60' < '9' |
+------------+
|          1 | 
+------------+
1 row in set (0.00 sec)
于 2010-11-18T11:31:53.453 に答える