73 / 100

LIKE

Shablon bo'yicha qidirish

Kirish: Ushbu qo'llanmada siz PostgreSQL LIKE va ILIKE operatorlari yordamida ustunlardagi matnlarni shablon bo'yicha qidirish va filtrlashni o'rganasiz.

PostgreSQL LIKE operatoriga kirish

PostgreSQLda LIKE operatori satrli ustunlarda berilgan andoza (shablon) bo'yicha qidirish imkonini beradi.

Asosiy sintaksis:

query.sql
SELECT column1, column2
FROM table_name
WHERE column1 LIKE pattern;

Shablon belgilari (Wildcards)

Shablon tuzish uchun ikkita maxsus belgidan foydalaniladi:

  • % (foiz belgisi) — ixtiyoriy sondagi (0 ta yoki undan ortiq) har qanday belgilarni ifodalaydi.
  • _ (pastki chiziq) — aynan bitta ixtiyoriy belgini ifodalaydi.

LIKE operatoriga misollar

Quyidagi misollarni products jadvali ustida ko'rib chiqamiz:

1. Nomi "Samsung" bilan boshlanadigan mahsulotlar

query.sql
SELECT product_name, price
FROM products
WHERE product_name LIKE 'Samsung%';

Samsung% shabloni "Samsung" so'zi bilan boshlanadigan har qanday matnga mos keladi.

2. Nomi "5" raqami bilan tugaydigan mahsulotlar

query.sql
SELECT product_name, price
FROM products
WHERE product_name LIKE '%5';

%5 shabloni oxirgi belgisi 5 bo'lgan barcha tovarlarni topadi.

3. Nomi tarkibida "Pro" so'zi bor mahsulotlar

query.sql
SELECT product_name, price
FROM products
WHERE product_name LIKE '%Pro%';

%Pro% so'zning boshida, o'rtasida yoki oxirida "Pro" qatnashgan barcha qatorlarni filtrlaydi.

4. Nomi aynan 10 ta belgidan iborat mahsulotlar

query.sql
SELECT product_name, price
FROM products
WHERE product_name LIKE '__________';

Bu yerda har bir _ bitta belgini bildiradi, 10 ta pastki chiziq aynan 10 ta belgidan iborat satrlarni tanlaydi.

Katta-kichik harflarga befarq qidiruv: ILIKE

Oddiy LIKE operatori katta va kichik harflarni farqlaydi (case-sensitive).

Katta-kichik harf farqisiz qidirish uchun PostgreSQL maxsus ILIKE operatorini taqdim etadi:

query.sql
SELECT product_name, price
FROM products
WHERE product_name ILIKE '%b%';

Bu so'rov matnida katta 'B' yoki kichik 'b' harfi qatnashgan barcha mahsulotlarni topadi.

Inkor qilish: NOT LIKE va NOT ILIKE

Shablondan tashqaridagi qatorlarni olish uchun NOT qo'shiladi:

query.sql
SELECT product_name
FROM products
WHERE product_name NOT ILIKE '%a%';

Nomi tarkibida 'a' yoki 'A' harfi qatnashmagan mahsulotlar ro'yxati chiqadi.

PostgreSQL operator belgilari

PostgreSQLda LIKE operatorlarining muqobil ramziy ko'rinishlari mavjud:

OperatorMa'nosi
~~LIKE
~~*ILIKE
!~~NOT LIKE
!~~*NOT ILIKE

Masalan:

query.sql
SELECT product_name
FROM products
WHERE product_name ~~ '%3%';

Maxsus belgilarni ekranlash (ESCAPE)

Agar qidirilayotgan matnning o'zida % yoki _ belgisi qatnashsa (masalan, "100%"), ularni oddiy belgi sifatida qabul qildirish uchun ESCAPE opsiyasidan foydalaniladi:

query.sql
SELECT product_name, description
FROM products
WHERE description LIKE '%100$%%' ESCAPE '$';

Bu yerda $ belgisi ekranlovchi (escape) belgi qilib tayinlandi, shuning uchun $% shablon emas, aynan % belgisi sifatida qidiriladi.

Xulosa

  • Shablon bo'yicha matn qidirish uchun LIKE, katta-kichik harfni hisobga olmaslik uchun esa ILIKE dan foydalaning.
  • % ixtiyoriy uzunlikdagi, _ esa bitta belgini bildiradi.
  • % va _ belgilarining o'zini qidirish uchun ESCAPE bandidan foydalaning.