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.
PostgreSQLda LIKE operatori satrli ustunlarda berilgan andoza (shablon) bo'yicha qidirish imkonini beradi.
Asosiy sintaksis:
SELECT column1, column2
FROM table_name
WHERE column1 LIKE pattern;
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.Quyidagi misollarni products jadvali ustida ko'rib chiqamiz:
SELECT product_name, price
FROM products
WHERE product_name LIKE 'Samsung%';
Samsung% shabloni "Samsung" so'zi bilan boshlanadigan har qanday matnga mos keladi.
SELECT product_name, price
FROM products
WHERE product_name LIKE '%5';
%5 shabloni oxirgi belgisi 5 bo'lgan barcha tovarlarni topadi.
SELECT product_name, price
FROM products
WHERE product_name LIKE '%Pro%';
%Pro% so'zning boshida, o'rtasida yoki oxirida "Pro" qatnashgan barcha qatorlarni filtrlaydi.
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.
Oddiy LIKE operatori katta va kichik harflarni farqlaydi (case-sensitive).
Katta-kichik harf farqisiz qidirish uchun PostgreSQL maxsus ILIKE operatorini taqdim etadi:
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.
Shablondan tashqaridagi qatorlarni olish uchun NOT qo'shiladi:
SELECT product_name
FROM products
WHERE product_name NOT ILIKE '%a%';
Nomi tarkibida 'a' yoki 'A' harfi qatnashmagan mahsulotlar ro'yxati chiqadi.
PostgreSQLda LIKE operatorlarining muqobil ramziy ko'rinishlari mavjud:
| Operator | Ma'nosi |
|---|---|
~~ | LIKE |
~~* | ILIKE |
!~~ | NOT LIKE |
!~~* | NOT ILIKE |
Masalan:
SELECT product_name
FROM products
WHERE product_name ~~ '%3%';
Agar qidirilayotgan matnning o'zida % yoki _ belgisi qatnashsa (masalan, "100%"), ularni oddiy belgi sifatida qabul qildirish uchun ESCAPE opsiyasidan foydalaniladi:
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.
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.