SQL Server BETWEEN
operator memungkinkan Anda menguji di antara rentang nilai dalam kueri Anda. Misalnya, Anda dapat menguji apakah suatu nilai berada di antara dua angka.
BETWEEN
operator bersifat inklusif, artinya mencakup nilai yang Anda tentukan dalam rentang. Artinya, itu mencakup nilai-nilai yang lebih besar atau sama dengan nilai yang lebih rendah, dan nilai-nilai yang kurang dari atau sama dengan nilai yang lebih tinggi. Oleh karena itu seperti menggunakan >=
dan <=
.
Contoh
Berikut ini contoh untuk didemonstrasikan.
SELECT Name, Population
FROM city
WHERE Population BETWEEN 22000 AND 24000
ORDER BY Population ASC;
Hasil:
+--------------+--------------+ | Name | Population | |--------------+--------------| | Thimphu | 22000 | | Weno | 22000 | | Nuku´alofa | 22400 | | Douglas | 23487 | | Saint John´s | 24000 | +--------------+--------------+
Seperti yang disebutkan, BETWEEN
inklusif, jadi hasilnya menyertakan dua nilai yang saya tentukan di kiri dan kanan AND
argumen.
Ini setara dengan melakukan hal berikut.
SELECT Name, Population
FROM city
WHERE Population >= 22000 AND Population <= 24000
ORDER BY Population ASC;
Hasil:
+--------------+--------------+ | Name | Population | |--------------+--------------| | Thimphu | 22000 | | Weno | 22000 | | Nuku´alofa | 22400 | | Douglas | 23487 | | Saint John´s | 24000 | +--------------+--------------+
NOT BETWEEN
Anda dapat menggunakan NOT
argumen untuk menentukan bahwa nilainya harus tidak berada di antara dua nilai yang ditentukan.
SELECT Name, Population
FROM city
WHERE Population NOT BETWEEN 300 AND 9696300
ORDER BY Population ASC;
Hasil:
+-----------------+--------------+ | Name | Population | |-----------------+--------------| | Adamstown | 42 | | West Island | 167 | | São Paulo | 9968485 | | Seoul | 9981619 | | Mumbai (Bombay) | 10500000 | +-----------------+--------------+
Kali ini kita mendapatkan hasil yang sama seperti jika kita menggunakan operator yang lebih kecil dan lebih besar.
SELECT Name, Population
FROM city
WHERE Population < 300 OR Population > 9696300
ORDER BY Population ASC;
Hasil:
+-----------------+--------------+ | Name | Population | |-----------------+--------------| | Adamstown | 42 | | West Island | 167 | | São Paulo | 9968485 | | Seoul | 9981619 | | Mumbai (Bombay) | 10500000 | +-----------------+--------------+
Saat menggunakan NOT BETWEEN
, jika kita ingin memasukkan nilai yang ditentukan dalam pengujian, kita perlu menambah/mengurangi nilai.
SELECT Name, Population
FROM city
WHERE Population NOT BETWEEN 301 AND 9696299
ORDER BY Population ASC;
Hasil:
+-----------------+--------------+ | Name | Population | |-----------------+--------------| | Adamstown | 42 | | West Island | 167 | | Fakaofo | 300 | | Shanghai | 9696300 | | São Paulo | 9968485 | | Seoul | 9981619 | | Mumbai (Bombay) | 10500000 | +-----------------+--------------+
Kali ini kita melihat bahwa dua kota ditambahkan ke kumpulan hasil kita; Fakaofo dengan populasi 300, dan Shanghai dengan populasi 9696300.
Omong-omong, ini semua adalah data sampel lama sehingga angka populasi mungkin tidak mencerminkan kenyataan sebenarnya dalam banyak kasus.
Berikut cara kami melakukannya dengan operator Kurang Dari atau Sama Dengan dan Lebih Besar dari atau Sama Dengan.
SELECT Name, Population
FROM city
WHERE Population <= 300 OR Population >= 9696300
ORDER BY Population ASC;
Hasil:
+-----------------+--------------+ | Name | Population | |-----------------+--------------| | Adamstown | 42 | | West Island | 167 | | Fakaofo | 300 | | Shanghai | 9696300 | | São Paulo | 9968485 | | Seoul | 9981619 | | Mumbai (Bombay) | 10500000 | +-----------------+--------------+
BETWEEN
dengan Tanggal
Saat Anda menggunakan BETWEEN
operator pada tanggal (seperti datetime , datetime2 , atau datetimeoffset nilai), sebaiknya gunakan format YYYYMMDD
untuk menghindari masalah lokal (misalnya, jika pengguna telah mengubah format tanggal untuk sesi mereka).
Juga, jika Anda tidak memberikan komponen waktu, defaultnya adalah 12:00 A.M.
Oleh karena itu, kueri berikut tidak akan mengembalikan baris apa pun yang berisi bagian waktu setelah pukul 12:00. pada 1973-12-31.
SELECT * FROM Artists
WHERE ActiveFrom BETWEEN '20010101' AND '20011231';
Anda dapat menyesuaikan nilai tanggal yang sesuai, atau Anda mungkin lebih suka menggunakan operator Lebih Besar Dari atau Sama Dengan dan Kurang Dari.
Seperti ini:
SELECT * FROM Artists
WHERE ActiveFrom >= '20010101' AND ActiveFrom < '20011231';