Pertama, Anda memerlukan tabel checkRanges
CREATE TABLE checkRanges
([checkID] int, [name] varchar(8), [low] int, [upper] int);
INSERT INTO checkRanges
([checkID], [name], [low], [upper])
VALUES
(1, '0-3', 0, 2),
(2, '3-6', 3, 5),
(4, '6-9', 6, 8),
(8, '9-12', 9, 11),
(16, '12+', 12, 999)
Lihat bagaimana checkID adalah kekuatan 2?
Di aplikasi Anda jika pengguna memilih 3-6 dan 9-12 Anda mengirim 2+8 = 10 ke db Anda. Juga akan lebih bagus jika Anda membuat kotak centang menggunakan info db.
Di db Anda, Anda melakukan perbandingan bitwise untuk memilih rentang yang tepat. Kemudian lakukan antara dengan setiap rentang.
WITH ranges as (
SELECT *
FROM checkRanges
where checkID & 10 > 0
)
SELECT *
FROM users u
inner join ranges r
on u.Experience between r.low and r.upper
Lihat semuanya bersama-sama Demo SQL Fiddle
Saya menyertakan lebih banyak pengguna. Anda hanya perlu mengubah klausul where checkID & 10 > 0 untuk menguji kombinasi lainnya.
CATATAN:
Saya memperbarui rentang. Ubah nilai atas menjadi value - 1 karena between inklusif dan dapat memberikan hasil duplikat.
Jika ingin menggunakan versi lama Anda harus mengganti betwewen dalam kalimat gabung ke
u.Experience >= r.low and u.Experience *<* r.upper