Dalam SQL, BETWEEN
operator memungkinkan Anda untuk memeriksa nilai yang berada dalam rentang tertentu.
BETWEEN
operator menentukan rentang yang akan diuji, dan mengembalikan TRUE
ketika operan berada dalam kisaran perbandingan.
Tabel Sumber
Tabel berikut digunakan untuk contoh di halaman ini.
SELECT * FROM Pets;
Hasil:
+---------+-------------+-----------+-----------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+------------| | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | | 3 | 2 | 2 | Scratch | 2018-10-01 | | 4 | 3 | 3 | Wag | 2020-03-15 | | 5 | 1 | 1 | Tweet | 2020-11-28 | | 6 | 3 | 4 | Fluffy | 2020-09-17 | | 7 | 3 | 2 | Bark | NULL | | 8 | 2 | 4 | Meow | NULL | +---------+-------------+-----------+-----------+------------+ (8 rows affected)
Contoh
Berikut adalah contoh sederhana untuk mendemonstrasikan BETWEEN
operator.
SELECT * FROM Pets
WHERE DOB BETWEEN '2018-10-01' AND '2020-09-17';
Hasil:
+---------+-------------+-----------+-----------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+------------| | 2 | 3 | 3 | Fetch | 2019-08-16 | | 3 | 2 | 2 | Scratch | 2018-10-01 | | 4 | 3 | 3 | Wag | 2020-03-15 | | 6 | 3 | 4 | Fluffy | 2020-09-17 | +---------+-------------+-----------+-----------+------------+
Dalam contoh ini, kami mengembalikan semua baris di mana DOB
kolom berada di antara 2018-10-01
dan 2020-09-17
.
Dalam hal ini, empat baris cocok dengan kriteria itu, dan oleh karena itu, empat baris dikembalikan.
ANTARA bersifat Inklusif
BETWEEN
operator. inklusif. Artinya, ini mencakup nilai-nilai di setiap akhir rentang. Jika Anda melihat hasil pada contoh sebelumnya, Anda akan melihat bahwa ada nilai di kedua ujungnya yang sama persis dengan tanggal yang kami berikan.
Ini sama dengan menggunakan operator yang lebih besar atau sama dengan (>=
) dikombinasikan dengan kurang dari atau sama dengan operator (<=
).
SELECT * FROM Pets
WHERE DOB >= '2018-10-01' AND DOB <= '2020-09-17';
Hasil:
+---------+-------------+-----------+-----------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+------------| | 2 | 3 | 3 | Fetch | 2019-08-16 | | 3 | 2 | 2 | Scratch | 2018-10-01 | | 4 | 3 | 3 | Wag | 2020-03-15 | | 6 | 3 | 4 | Fluffy | 2020-09-17 | +---------+-------------+-----------+-----------+------------+
Untuk menjadikannya rentang eksklusif, gunakan lebih besar dari (>
) operator dan kurang dari (<
) operator.
SELECT * FROM Pets
WHERE DOB > '2018-10-01' AND DOB < '2020-09-17';
Hasil:
+---------+-------------+-----------+-----------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+------------| | 2 | 3 | 3 | Fetch | 2019-08-16 | | 4 | 3 | 3 | Wag | 2020-03-15 | +---------+-------------+-----------+-----------+------------+
Jika Anda harus menggunakan BETWEEN
operator, Anda harus mempersempit jangkauannya.
Seperti ini:
SELECT * FROM Pets
WHERE DOB BETWEEN '2018-10-02' AND '2020-09-16';
Hasil:
+---------+-------------+-----------+-----------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+------------| | 2 | 3 | 3 | Fetch | 2019-08-16 | | 4 | 3 | 3 | Wag | 2020-03-15 | +---------+-------------+-----------+-----------+------------+
Menggunakan Nilai Numerik
Contoh sebelumnya menggunakan tanggal, tetapi Anda tidak terbatas hanya pada tanggal. Berikut adalah contoh yang menggunakan nilai numerik.
SELECT * FROM Pets
WHERE OwnerId BETWEEN 2 AND 3;
Hasil:
+---------+-------------+-----------+-----------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+------------| | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | | 3 | 2 | 2 | Scratch | 2018-10-01 | | 4 | 3 | 3 | Wag | 2020-03-15 | | 7 | 3 | 2 | Bark | NULL | +---------+-------------+-----------+-----------+------------+
Menggunakan Nilai String
Kita bisa melangkah lebih jauh dan menggunakan BETWEEN
untuk membandingkan dua kolom string.
SELECT * FROM Pets
WHERE PetName BETWEEN 'Meow' AND 'Wag'
ORDER BY PetName;
Hasil:
+---------+-------------+-----------+-----------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+------------| | 8 | 2 | 4 | Meow | NULL | | 3 | 2 | 2 | Scratch | 2018-10-01 | | 5 | 1 | 1 | Tweet | 2020-11-28 | | 4 | 3 | 3 | Wag | 2020-03-15 | +---------+-------------+-----------+-----------+------------+
Anda perlu berhati-hati sekalipun. Anda mungkin berpikir bahwa kami hanya bisa menggunakan huruf awal, seperti ini:
SELECT * FROM Pets
WHERE PetName BETWEEN 'M' AND 'W'
ORDER BY PetName;
Tapi itu akan menghasilkan ini:
+---------+-------------+-----------+-----------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+------------| | 8 | 2 | 4 | Meow | NULL | | 3 | 2 | 2 | Scratch | 2018-10-01 | | 5 | 1 | 1 | Tweet | 2020-11-28 | +---------+-------------+-----------+-----------+------------+
Itu tidak termasuk Wag
seperti yang dilakukan kueri sebelumnya. Itu karena BETWEEN
melihat seluruh string. Dalam hal ini, Wag
lebih besar dari W
, sehingga tidak disertakan dalam hasil.