- 1 1. Sissejuhatus
- 2 2. MySQL IF-funktsiooni põhitõed
- 3 3. IF ja muud tingimuslaused (CASE, IFNULL jne) võrdluses
- 4 4. Praktilised näited: andmete töötlemine IF-funktsiooniga
- 5 5. Edasijõudnud kasutus: alampäringud ja IF-funktsioon
- 6 6. Tõrkeotsing: tüüpilised probleemid IF-funktsiooni kasutamisel
- 7 7. Kokkuvõte
1. Sissejuhatus
Tingimuslaused MySQL-is on väga olulised, et teha andmebaasi päringuid ja andmetöötlust paindlikult. Eriti siis, kui tulemused peavad sõltuma teatud tingimustest või kui on vaja andmeid teisendada, on tingimuslaused abiks. Nende seas on IF
-funktsioon üks lihtsamaid ja kasutajasõbralikumaid viise tingimuslausetega töötamiseks. Käesolevas artiklis selgitame üksikasjalikult MySQL-i IF
-funktsiooni põhitõdesid ja edasijõudnutele mõeldud kasutust ning toome praktilisi näiteid.
2. MySQL IF-funktsiooni põhitõed
2.1 IF-funktsiooni süntaks
IF
-funktsioon tagastab kindla väärtuse, kui määratud tingimus on tõene (TRUE), ja teise väärtuse, kui tingimus on väär (FALSE). Süntaks on järgmine:
IF(tingimus, väärtus kui tõene, väärtus kui väär)
2.2 Põhiline kasutus
IF
-funktsiooni abil saab näiteks kontrollida, kas mingi veeru väärtus vastab kindlale kriteeriumile, ja tagastada vastavalt erineva tulemuse. Järgmises näites tagastatakse sales
-tabeli amount
-veeru väärtuse põhjal kas „High“, kui see on vähemalt 1000, või „Low“, kui see on väiksem.
SELECT
amount,
IF(amount >= 1000, 'High', 'Low') AS sales_category
FROM
sales;
Selles päringus määratakse sales_category
-veerule väärtus „High“, kui amount
≥ 1000, ja „Low“, kui see on väiksem.

3. IF ja muud tingimuslaused (CASE, IFNULL jne) võrdluses
3.1 CASE-lausete võrdlus
CASE
-lausete abil saab hallata keerulisemaid tingimusi kui IF
-funktsiooniga. Süntaks on järgmine:
CASE
WHEN tingimus1 THEN tulemus1
WHEN tingimus2 THEN tulemus2
...
ELSE vaikimisi_väärtus
END
CASE
-lause hindab mitut tingimust ja tagastab esimese TRUE tulemuse. Võrreldes IF
-iga on CASE
sobivam keerukama loogika loomiseks, kuna see võimaldab käsitleda rohkem tingimusi.
3.2 IFNULL-funktsiooni võrdlus
IFNULL
-funktsioon on mõeldud NULL-väärtuste käsitlemiseks. Kui määratud veerus on NULL, tagastatakse vaikeväärtus. Süntaks on järgmine:
IFNULL(veeru_nimi, vaikeväärtus)
Näiteks, kui phone_number
-veeru väärtus on NULL, tagastab järgmine päring „N/A“:
SELECT
name,
IFNULL(phone_number, 'N/A') AS phone
FROM
customers;
3.3 Kombineerimine loogikaoperaatoritega
IF
-funktsiooni saab kombineerida loogikaoperaatoritega (AND, OR, XOR jne), et luua paindlikumaid tingimuslausete lahendusi. Järgmises näites tagastatakse „High East“, kui amount
≥ 1000 ja region
= „East“, vastasel juhul „Other“.
SELECT
amount,
region,
IF(amount >= 1000 AND region = 'East', 'High East', 'Other') AS category
FROM
sales;
4. Praktilised näited: andmete töötlemine IF-funktsiooniga
4.1 Väärtuste muutmine tingimuste põhjal
IF
-funktsiooni abil saab muuta andmeid vastavalt teatud tingimustele. Näiteks päring, mis määrab orders
-tabelis quantity
≥ 10 puhul „Bulk Order“ ja muidu „Standard Order“, näeb välja järgmine:
SELECT
order_id,
quantity,
IF(quantity >= 10, 'Bulk Order', 'Standard Order') AS order_type
FROM
orders;
4.2 IF-funktsiooni kasutamine agregeerimisel
IF
-funktsiooni saab kasutada ka agregeerimispäringutes. Näiteks, et summeerida ainult need müügid, kus amount
≥ 100, võib kasutada järgmist päringut:
SELECT
product_id,
SUM(IF(amount >= 100, amount, 0)) AS high_sales_total
FROM
sales
GROUP BY
product_id;
Selles päringus arvestatakse ainult neid ridu, kus amount
≥ 100.
4.3 Jõudluse kaalutlused
IF
-funktsiooni sage kasutamine võib mõjutada päringute jõudlust. Eriti suurte andmehulkade või keerukate tingimuslausete korral on soovitatav rakendada indekseid või optimeerida päringuid.

5. Edasijõudnud kasutus: alampäringud ja IF-funktsioon
5.1 IF-funktsiooni kasutamine alampäringutes
IF
-funktsiooni saab kasutada ka alampäringutes keerulisemate tingimuste jaoks. Näiteks saab määrata kliendid „VIP“-iks, kui nende tellimuste summa on ≥ 1000, ja „Regular“-iks, kui väiksem:
SELECT
customer_id,
IF((SELECT SUM(amount) FROM orders WHERE customer_id = c.customer_id) >= 1000, 'VIP', 'Regular') AS customer_type
FROM
customers c;
5.2 Keerukate tingimuslausete loomine
Kombineerides alampäringud ja IF
-funktsiooni, on võimalik luua keerukaid loogikaid. Näiteks erinevate tegevuste rakendamine sõltuvalt laoseisust või mitme tabeli ristviited.
6. Tõrkeotsing: tüüpilised probleemid IF-funktsiooni kasutamisel
6.1 Andmetüüpide mittevastavus
Üks levinud probleem on tagastatavate väärtuste andmetüüpide erinevus. Kui IF
-funktsioon tagastab korraga numbreid ja stringe, võib tulemus olla ootamatu või vale formaadis.
6.2 NULL-väärtuste käsitlemine
Kui tingimuse väärtuseks osutub NULL, tõlgendab IF
-funktsioon seda kui FALSE. Seega tuleb NULL-idega arvestades tingimused hoolikalt koostada.
6.3 Jõudluse optimeerimine
Suurte andmehulkade korral võib IF
-i liigne kasutamine aeglustada päringuid. Sel juhul võiks kasutada indekseid või refaktoreerida päringud, et jõudlust parandada.
7. Kokkuvõte
Selles artiklis käsitlesime MySQL IF
-funktsiooni põhitõdesid ja edasijõudnuid kasutusviise. IF
-funktsioon on võimas tööriist lihtsate tingimuslausete loomiseks. Kombineerides selle teiste meetodite ja alampäringutega, saab lahendada ka keerukamaid andmetöötluse ülesandeid. Õigesti kasutades aitab IF
-funktsioon tõhustada andmebaasi operatsioone ja saavutada paindlikke lahendusi.