# SQL operatorlar: BETWEEN, IN, LIKE

> SQL WHERE operatorlari: BETWEEN bilan oraliqni tekshirish, IN bilan ro'yxatdan tanlash va LIKE bilan matn shabloni bo'yicha qidirish (% va _ joker belgilar).

Manba: https://learncode.uz/sql/operatorlar/
Sana: 2026-06-13

[WHERE darsida](https://learncode.uz/sql/where) shartlarni `=`, `>`, `AND`, `OR` bilan yozdik.
SQL'da yana uch qulay operator bor — ular tez-tez uchraydigan filtrlarni
ancha qisqartiradi: **`BETWEEN`**, **`IN`** va **`LIKE`**.

`mahsulotlar` jadvali:

| id | nom | narx | soni | turi |
|---|---|---|---|---|
| 1 | Olma | 8000 | 50 | meva |
| 2 | Non | 3000 | 120 | non |
| 3 | Sut | 12000 | 30 | sut mahsuloti |
| 4 | Choy | 15000 | 40 | ichimlik |
| 5 | Banan | 14000 | 25 | meva |
| 6 | Qatiq | 9000 | 0 | sut mahsuloti |
| 7 | Suv | 4000 | 200 | ichimlik |
| 8 | Guruch | 18000 | 60 | don |

## BETWEEN — oraliq

`BETWEEN a AND b` — qiymat `a` va `b` **oralig'ida**mi (ikkala chegara ham
kiradi):

```sql
SELECT nom, narx FROM mahsulotlar WHERE narx BETWEEN 8000 AND 13000;
```

O'zingiz ishga tushirib ko'ring — so'rovni tahrirlashingiz ham mumkin:

```sql
SELECT nom, narx FROM mahsulotlar WHERE narx BETWEEN 8000 AND 13000;
```

Natija — narxi 8000 dan 13000 gacha:

| nom | narx |
|---|---|
| Olma | 8000 |
| Sut | 12000 |
| Qatiq | 9000 |

Bu `narx >= 8000 AND narx <= 13000` bilan bir xil, lekin qisqaroq va
o'qishga tushunarli.

> **Boshlovchilar tez-tez yanglishadigan joy**
>
> `BETWEEN` **ikkala chegarani ham qo'shadi**. `BETWEEN 8000 AND 13000` —
> 8000 ham, 13000 ham kiradi. Ba'zi tillarda oraliq chegarani qo'shmaydi,
> lekin SQL'da qo'shadi. Buni esda tuting, aks holda chekkadagi qiymatlar
> kutilmaganda kirib yoki tushib qoladi.

## IN — ro'yxatdan biri

`IN (...)` — qiymat berilgan **ro'yxatdagilardan biri**ga tengmi:

```sql
SELECT nom, turi FROM mahsulotlar WHERE turi IN ('meva', 'ichimlik');
```

Natija — turi meva yoki ichimlik bo'lganlar:

| nom | turi |
|---|---|
| Olma | meva |
| Choy | ichimlik |
| Banan | meva |
| Suv | ichimlik |

Bu `turi = 'meva' OR turi = 'ichimlik'` bilan bir xil. Variant ko'p bo'lsa,
`IN` ancha qisqa. Aksini kerak bo'lsa — `NOT IN (...)`.

## LIKE — matn shabloni

`LIKE` matnni **shablon** bo'yicha qidiradi. Ikki joker belgi ishlatiladi:

- **`%`** — istalgan sondagi istalgan belgi (0 ta ham, ko'p ham)
- **`_`** — aynan **bitta** istalgan belgi

`S` bilan boshlanadigan nomlar:

```sql
SELECT nom FROM mahsulotlar WHERE nom LIKE 'S%';
```

Natija — Sut va Suv. Boshqa shablonlar:

- `'%v'` — `v` bilan **tugaydigan**: Suv
- `'%a%'` — ichida `a` **bor**: Olma, Banan, Qatiq
- `'_ut'` — bitta belgi + "ut": Sut

> **Atama**
>
> **Joker belgi** (wildcard) — matnda "istalgan narsa" o'rnini bosadigan
> belgi. `LIKE` da `%` (istalgan sondagi belgi) va `_` (aynan bitta belgi).
> Bu qidiruv maydonlarida — "nomi 'Ol' bilan boshlanadigan mahsulotlar" —
> keng ishlatiladi.

## Uchalasini birlashtirish

Bu operatorlar sodda shartlar bilan `AND`/`OR` orqali birlashadi:

```sql
SELECT nom, narx FROM mahsulotlar
WHERE turi IN ('meva', 'don') AND narx > 10000;
```

Bu — turi meva yoki don, **va** narxi 10000 dan qimmat bo'lganlar: Banan
(meva, 14000) va Guruch (don, 18000).

<Callout type="example" title="O'zingizni sinab ko'ring">
Namuna bazangizda sinang:

```sql
SELECT nom, soni FROM mahsulotlar WHERE soni BETWEEN 30 AND 60;
SELECT nom FROM mahsulotlar WHERE nom LIKE '%o%';
```

Birinchisi ombori 30 dan 60 gacha bo'lganlarni, ikkinchisi ichida `o`
harfi bor nomlarni beradi. Endi `IN` bilan uch xil turdagi mahsulotni bir
so'rovda tanlab ko'ring.
</Callout>

## Amaliy mashq

Operatorlarni sinang:

1. `BETWEEN` bilan narxi 8000-13000 oralig'idagilarni toping;
2. `IN` bilan `'meva'` va `'ichimlik'` turlarini birga oling;
3. `LIKE 'S%'` bilan S harfidan boshlanadiganlarni toping;
4. `LIKE '%t%'` bilan ichida `t` bor nomlarni toping;
5. `NOT IN` bilan meva bo'lmaganlarni chiqaring;
6. `LIKE` va `NOT BETWEEN` ni `AND` bilan bitta so'rovda birlashtiring:
   nomida `a` bor, lekin narxi 8000-13000 oralig'ida bo'lmaganlar.

`BETWEEN 8000 AND 13000` chegaralarni o'z ichiga oladimi? Sinab tekshiring.

## Qisqacha xulosa

- `BETWEEN a AND b` — `a` va `b` oralig'i; **ikkala chegara ham kiradi**.
- `IN (...)` — ro'yxatdagi qiymatlardan biriga tenglik; `NOT IN` — teskarisi.
- `LIKE` — matn shabloni: `%` (istalgan sondagi belgi), `_` (bitta belgi).
- Bu operatorlar `AND`/`OR` bilan boshqa shartlarga qo'shiladi.
- Uchalasi ham `WHERE` ni qisqaroq va o'qishga qulayroq qiladi.

Keyingi darsda [`AS`](https://learncode.uz/sql/as-taxallus) bilan ustun va jadvallarga
**taxallus** (vaqtinchalik nom) berishni ko'ramiz — natijani chiroyliroq
va JOIN'ni qulayroq qiladi.
