15

BETWEEN節で使用して、WHERE2 つの値の間のデータ範囲を選択します。
範囲のエンドポイントが除外されているかどうかが正しければ、DBMS 固有です。
以下で理解できないこと:
値のテーブルがあり、次のクエリを実行した場合:

SELECT food_name 
    FROM health_foods 
    WHERE calories BETWEEN 33 AND 135;`  

クエリは、カロリー =33 とカロリー =135を含む行を結果として返します (つまり、範囲エンドポイントが含まれます)。

しかし、もしそうなら:

SELECT food_name 
    FROM health_foods 
    WHERE food_name BETWEEN 'G' AND 'O';

で始まる行を取得できませ。つまり、範囲の終わりは除外されます。 クエリが期待どおりに機能するようにするには、次のように入力します。food_nameO

SELECT food_name 
    FROM health_foods 
    WHERE food_name BETWEEN 'G' AND 'P';`   

BETWEEN私の質問は、なぜ数字とテキストデータにそのような違いがあるのですか?

4

3 に答える 3

5

「オレンジ」と「O」の例を見てみましょう。文字列 'Orange' は文字列 'O' と明らかに等しくなく、長いので、それより大きくなければなりません。

ただし、「オレンジ」<「OZZZZZZZZZZZZZZ」を実行できます。

于 2013-03-30T16:46:44.230 に答える
2

これを試してくださいREGEX

  WHERE  food_name REGEXP '^[G-O]';

これにより、G で始まるすべての food_name が O で始まるものまで表示されます

デモはこちら

于 2013-03-30T16:45:55.833 に答える