SQL Server BETWEEN
演算子を使用すると、クエリ内の値の範囲をテストできます。たとえば、値が2つの数値の間にあることをテストできます。
BETWEEN
演算子は包括的です。つまり、範囲内で指定した値が含まれます。つまり、低い値以上の値と、高い値以下の値が含まれます。したがって、>=
を使用するようなものです および<=
。
例
実例を示します。
SELECT Name, Population
FROM city
WHERE Population BETWEEN 22000 AND 24000
ORDER BY Population ASC;
結果:
+--------------+--------------+ | Name | Population | |--------------+--------------| | Thimphu | 22000 | | Weno | 22000 | | Nuku´alofa | 22400 | | Douglas | 23487 | | Saint John´s | 24000 | +--------------+--------------+
前述のように、BETWEEN
は包括的であるため、結果には、AND
の左右に指定した2つの値が含まれます。 引数。
これは、次のことを行うのと同じです。
SELECT Name, Population
FROM city
WHERE Population >= 22000 AND Population <= 24000
ORDER BY Population ASC;
結果:
+--------------+--------------+ | Name | Population | |--------------+--------------| | Thimphu | 22000 | | Weno | 22000 | | Nuku´alofa | 22400 | | Douglas | 23487 | | Saint John´s | 24000 | +--------------+--------------+
NOT BETWEEN
NOT
を使用できます 値をしないことを指定する引数 指定された2つの値の間にあります。
SELECT Name, Population
FROM city
WHERE Population NOT BETWEEN 300 AND 9696300
ORDER BY Population ASC;
結果:
+-----------------+--------------+ | Name | Population | |-----------------+--------------| | Adamstown | 42 | | West Island | 167 | | São Paulo | 9968485 | | Seoul | 9981619 | | Mumbai (Bombay) | 10500000 | +-----------------+--------------+
今回は、より小さい演算子とより大きい演算子を使用した場合と同じ結果が得られます。
SELECT Name, Population
FROM city
WHERE Population < 300 OR Population > 9696300
ORDER BY Population ASC;
結果:
+-----------------+--------------+ | Name | Population | |-----------------+--------------| | Adamstown | 42 | | West Island | 167 | | São Paulo | 9968485 | | Seoul | 9981619 | | Mumbai (Bombay) | 10500000 | +-----------------+--------------+
NOT BETWEEN
を使用する場合 、指定した値をテストに含める場合は、値をインクリメント/デクリメントする必要があります。
SELECT Name, Population
FROM city
WHERE Population NOT BETWEEN 301 AND 9696299
ORDER BY Population ASC;
結果:
+-----------------+--------------+ | Name | Population | |-----------------+--------------| | Adamstown | 42 | | West Island | 167 | | Fakaofo | 300 | | Shanghai | 9696300 | | São Paulo | 9968485 | | Seoul | 9981619 | | Mumbai (Bombay) | 10500000 | +-----------------+--------------+
今回は、2つの都市が結果セットに追加されていることがわかります。人口300人のファカオフォ島と人口9696300人の上海。
ちなみに、これはすべて古いサンプルデータであるため、人口の数値は多くの場合、実際の現実を反映していない可能性があります。
これが、LessThanまたはEqualToおよびGreaterThan orEqualTo演算子を使用して行う方法です。
SELECT Name, Population
FROM city
WHERE Population <= 300 OR Population >= 9696300
ORDER BY Population ASC;
結果:
+-----------------+--------------+ | Name | Population | |-----------------+--------------| | Adamstown | 42 | | West Island | 167 | | Fakaofo | 300 | | Shanghai | 9696300 | | São Paulo | 9968485 | | Seoul | 9981619 | | Mumbai (Bombay) | 10500000 | +-----------------+--------------+
BETWEEN
日付付き
BETWEEN
を使用する場合 日付の演算子( datetime など) 、 datetime2 、または datetimeoffset 値)、YYYYMMDD
の形式を使用するのが最適です ロケールの問題を回避するため(たとえば、ユーザーがセッションの日付形式を変更した場合)。
また、時間コンポーネントを指定しない場合、デフォルトで午前12:00になります。
したがって、次のクエリでは、午前12時以降の時間部分を含む行は返されません。 1973-12-31に。
SELECT * FROM Artists
WHERE ActiveFrom BETWEEN '20010101' AND '20011231';
それに応じて日付の値を調整するか、「より大きい」または「等しい」および「より小さい」演算子を使用することをお勧めします。
このように:
SELECT * FROM Artists
WHERE ActiveFrom >= '20010101' AND ActiveFrom < '20011231';