Ifodalar, funksiyalar va CASE
069 daq
SELECT faqat ustunni ko‘rsatmaydi — u hisoblaydi ham. Bu darsda arifmetika, matn bilan ishlash va CASE bilan «agar … bo‘lsa» shartini o‘rganamiz.
Arifmetika
+ - * / va % (qoldiq) ishlaydi:
Butun sonni butun songa bo‘lishga ehtiyot bo‘ling. PostgreSQL’da
7 / 2=3(kasr qismi tashlanadi), MySQL’da esa3.5000. Kasr kerak bo‘lsa, birini kasr qiling:7 * 1.0 / 2.
Yaxlitlash: ROUND
ROUND(son, n) — n ta xonagacha. Yana CEIL (yuqoriga) va FLOOR (pastga) bor.
Matn funksiyalari
| Funksiya | Nima qiladi |
|---|---|
UPPER(s) / LOWER(s) |
katta / kichik harf |
LENGTH(s) |
belgilar soni |
TRIM(s) |
boshidagi va oxiridagi bo‘sh joylarni olib tashlaydi |
SUBSTRING(s, 1, 3) |
1-belgidan boshlab 3 ta belgi |
REPLACE(s, 'a', 'b') |
almashtirish |
Matnlarni ulash:
PostgreSQL’da || belgisi yoki CONCAT funksiyasi:
NULL bilan hisob: COALESCE
NULL ishtirok etgan har qanday hisob NULL beradi: 5 + NULL = NULL. COALESCE(a, b) — a bo‘sh bo‘lsa, b ni oladi:
CASE — «agar … bo‘lsa»
Shartlar yuqoridan pastga tekshiriladi, birinchi to‘g‘ri kelgani olinadi. Hech biri to‘g‘ri kelmasa — ELSE, u ham bo‘lmasa — NULL.
Har bir mahsulotning name ustunini va omborda qolgan mahsulotning umumiy qiymatini (price * stock) chiqaring.
Haydovchilarning first_name ustunini va reytingi bo‘yicha toifasini chiqaring: 4.8 va undan yuqori — 'top', qolganlari — 'oddiy', reytingi yo‘qlar — 'yangi'.
Esda qoldiring
SELECTichida hisoblash mumkin; butun sonlarni bo‘lishda ehtiyot bo‘ling.COALESCE(x, 0)—NULLo‘rniga qiymat qo‘yadi.CASE WHEN … THEN … ELSE … END— shartga qarab qiymat tanlaydi.