SQLでは、以下の演算子( <=
)2つの式を比較し、 TRUE
を返します 左のオペランドの値が右のオペランド以下の場合。それ以外の場合、結果は FALSE
になります 。
これを使用して、値が別の値以下であるかどうかを判断できます。
例
実例を示します。
SELECT * FROM city
WHERE Population <= 455;
結果:
+------+--------------------+---------------+-------------+--------------+ | ID | Name | CountryCode | District | Population | |------+--------------------+---------------+-------------+--------------| | 2317 | West Island | CCK | West Island | 167 | | 2912 | Adamstown | PCN | – | 42 | | 3333 | Fakaofo | TKL | Fakaofo | 300 | | 3538 | Città del Vaticano | VAT | – | 455 | +------+--------------------+---------------+-------------+--------------+
このクエリは、人口が455人以下のすべての都市を返します。
包括的
以下の演算子は、指定された値を評価に含めます。これは、前の例で、人口455の都市が含まれているときに見られました。これは、指定した正確な値です。
この都市を含めたくない場合は、値を下げる必要があります:
SELECT * FROM city
WHERE Population <= 454;
結果:
+------+-------------+---------------+-------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-------------+---------------+-------------+--------------| | 2317 | West Island | CCK | West Island | 167 | | 2912 | Adamstown | PCN | – | 42 | | 3333 | Fakaofo | TKL | Fakaofo | 300 | +------+-------------+---------------+-------------+--------------+
または、less than演算子( <
)を使用することもできます。 )代わりに:
SELECT * FROM city
WHERE Population < 455;
結果:
+------+-------------+---------------+-------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-------------+---------------+-------------+--------------| | 2317 | West Island | CCK | West Island | 167 | | 2912 | Adamstown | PCN | – | 42 | | 3333 | Fakaofo | TKL | Fakaofo | 300 | +------+-------------+---------------+-------------+--------------+
より小さい演算子には、指定した値は含まれません。
日付
以下は、以下の演算子を使用して日付値を比較する方法を示す例です。
SELECT PetName, DOB
FROM Pets
WHERE DOB <= '2020-03-15';
結果:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fetch | 2019-08-16 | | Scratch | 2018-10-01 | | Wag | 2020-03-15 | +-----------+------------+
文字列
<=
を使用することもできます 文字列値を比較する演算子。文字列値と比較するときは、文字列リテラルを引用符で囲みます。
SELECT * FROM city
WHERE Name <= 'Ab';
結果:
+------+------------------------------+---------------+---------------------+--------------+ | ID | Name | CountryCode | District | Population | |------+------------------------------+---------------+---------------------+--------------| | 20 | ´s-Hertogenbosch | NLD | Noord-Brabant | 129170 | | 548 | Šumen | BGR | Varna | 94686 | | 670 | A Coruña (La Coruña) | ESP | Galicia | 243402 | | 698 | [San Cristóbal de] la Laguna | ESP | Canary Islands | 127945 | | 2450 | Šiauliai | LTU | Šiauliai | 146563 | | 3097 | Aachen | DEU | Nordrhein-Westfalen | 243825 | | 3318 | Aalborg | DNK | Nordjylland | 161161 | | 3479 | Šostka | UKR | Sumy | 90000 | | 3665 | Šahty | RUS | Rostov-na-Donu | 221800 | | 3736 | Štšolkovo | RUS | Moskova | 104900 | +------+------------------------------+---------------+---------------------+--------------+
このクエリは、 Ab
以下のすべての都市を返します 。基本的に、 Ab
より下の文字で始まるすべての都市を返します または正確にAb
。
複数の条件
複数の条件がある場合は、複数の <=
を使用できます 演算子。
このように:
SELECT * FROM city
WHERE Name <= 'Ab' AND Population <= 100000;
結果:
+------+--------+---------------+------------+--------------+ | ID | Name | CountryCode | District | Population | |------+--------+---------------+------------+--------------| | 548 | Šumen | BGR | Varna | 94686 | | 3479 | Šostka | UKR | Sumy | 90000 | +------+--------+---------------+------------+--------------+
優先順位
結果をフィルタリングするときに、演算子を組み合わせて使用することもできます。
SQLには、さまざまな演算子タイプに割り当てる優先順位があることに注意してください。たとえば、 AND
などの論理演算子の前に条件演算子を評価します。 およびOR
。さらに、 AND
を評価します OR
の前の演算子 演算子。
括弧はすべての演算子よりも優先順位が高いため、括弧を使用して、各条件を評価する順序を指定できます。
次の例を考えてみましょう:
SELECT * FROM city
WHERE Name <= 'Ab'
AND Population <= 100000
OR District = 'Canary Islands';
結果:
+------+------------------------------+---------------+----------------+--------------+ | ID | Name | CountryCode | District | Population | |------+------------------------------+---------------+----------------+--------------| | 548 | Šumen | BGR | Varna | 94686 | | 660 | Las Palmas de Gran Canaria | ESP | Canary Islands | 354757 | | 672 | Santa Cruz de Tenerife | ESP | Canary Islands | 213050 | | 698 | [San Cristóbal de] la Laguna | ESP | Canary Islands | 127945 | | 3479 | Šostka | UKR | Sumy | 90000 | +------+------------------------------+---------------+----------------+--------------+
このクエリでは、かっこを指定しなかったため、 AND
演算子はOR
の前に評価されました オペレーター。
したがって、 Name <='Ab' AND Population <=100000
のいずれかを満たす行が得られました。 またはDistrict='カナリア諸島'
。これを見るだけで、カナリア諸島のすべての都市に加えて、最初の基準を満たすすべての都市が返還されることがわかります。
これは、次のようになります。
SELECT * FROM city
WHERE (Name <= 'Ab'
AND Population <= 100000)
OR District = 'Canary Islands';
これにより、括弧なしの前のクエリと同じ結果が得られます。
しかし、括弧を OR
に移動するとどうなるか見てみましょう。 状態。
SELECT * FROM city
WHERE Name <= 'Ab'
AND (Population <= 100000
OR District = 'Canary Islands');
結果:
+------+------------------------------+---------------+----------------+--------------+ | ID | Name | CountryCode | District | Population | |------+------------------------------+---------------+----------------+--------------| | 548 | Šumen | BGR | Varna | 94686 | | 698 | [San Cristóbal de] la Laguna | ESP | Canary Islands | 127945 | | 3479 | Šostka | UKR | Sumy | 90000 | +------+------------------------------+---------------+----------------+--------------+
今回は、 Population <=100000 OR District ='Canary Islands'
の両方を満たす都市のみを取得しました。 および Name <='Ab'
。
条件を否定する
NOT
を使用できます <=
によって提供される条件を否定する演算子 オペレーター。次に例を示します。
SELECT PetName, DOB
FROM Pets
WHERE NOT DOB <= '2019-12-31';
結果:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fluffy | 2020-11-20 | | Wag | 2020-03-15 | | Tweet | 2020-11-28 | | Fluffy | 2020-09-17 | +-----------+------------+