- 1 1. Introduction
- 2 2. What is the IFNULL function?
- 3 3. Practical examples of the IFNULL function
- 4 3.5 ORDER BY හි NULL අගයන් අවසානයේ තබන්න
- 5 4. IFNULL සහ COALESCE අතර වෙනස්කම්
- 6 5. MySQL හැර වෙනත් දත්ත ගබඩා වල NULL-සංස්කරණ ක්රියා
- 7 6. නිතර අසන ප්රශ්න (FAQ)
- 7.1 ප්ර.1. IFNULL ක්රියාකාරකම සහ NVL ක්රියාකාරකම එකමද?
- 7.2 ප්ර.2. IFNULL සහ COALESCE අතර වෙනස කුමක්ද?
- 7.3 ප්ර.3. IFNULL සංඛ්යාත නොවන දත්ත වර්ග සමඟ භාවිතා කළ හැදියිද?
- 7.4 ප්ර.4. IFNULL භාවිතා කිරීම කාර්ය සාධනය අඩු කරද?
- 7.5 ප්ර.5. IFNULL වෙනුවට CASE භාවිතා කළ හැදියිද?
- 7.6 ප්ර.6. IFNULL WHERE වාක්යයේ භාවිතා කළ හැදියිද?
- 7.7 සාරාංශය
- 8 7. නිගමනය
1. Introduction
දත්ත සමුදා සමඟ වැඩ කරන විට, NULL අගයන් සැකසීම ඉතා වැදගත් කරුණකි.
විශේෂයෙන්, Oracle හි NVL ක්රියාවලිය භාවිතා කරමින් සිටින අය MySQL වෙත මාරු වන විට NVL ලබා නොදෙන බව දැන ගැනීම අසාමාන්ය නොවේ.
MySQL හි, ඔබට IFNULL ක්රියාවලිය භාවිතා කරමින් NULL අගයන් නිසි ලෙස සැකසිය හැක, NVL වෙනුවට.
මෙම ලිපිය MySQL හි NULL අගයන් සමඟ කෙසේ වැඩ කළ යුතුද යන්න විස්තරාත්මකව පැහැදිලි කරයි, IFNULL භාවිතය සහ එය අනෙකුත් NULL-සැකසුම් ක්රියාවලීන්ගෙන් කෙසේ වෙනස්ද යන්න ආවරණය කරයි.
1.1 What is a NULL value?
දත්ත සමුදා වල, NULL යනු “කිසිදු අගයක් සකසා නොමැත” යන අර්ථයයි.
මෙය “0” හෝ “හිස් පදයක්” යන දෙකෙන් වෙනස් වන බැවින්, නිසි ලෙස සැකසීමට නොහැකි වීම අනපේක්ෂිත දෝෂ හෝ වැරදි විමසුම් ප්රතිඵල වෙත හේතු විය හැක.
උදාහරණයක් ලෙස, පහත පරිදි දත්තයක් ඔබට තිබේ.
| ID | Name | Age |
|---|---|---|
| 1 | Yamada | 25 |
| 2 | Sato | NULL |
| 3 | Suzuki | 30 |
ඉහත දත්තයේ, ID “2” (Sato) සඳහා වයස NULL වේ.
ඔබ ගණනයන් එම තත්වයෙන්ම ක්රියාත්මක කරන්නේ නම්, දෝෂ හෝ අනිච්චිත ප්රතිඵල ලැබිය හැක.
1.2 How MySQL handles NULL values
2. What is the IFNULL function?
MySQL IFNULL ක්රියාවලිය NULL අගයන් වෙනත් අගයක් සමඟ ප්රතිස්ථාපනය කිරීමේ ක්රියාවලිය ලෙස සපයයි.
එය Oracle හි NVL ක්රියාවලියට සමාන කාර්යයක් කරයි.
NULL අගයන් නිසි ලෙස සැකසීමෙන්, අතුරුදන් වූ දත්ත නිසා සිදුවන ගණනාවල ගැටළු වැළැක්විය හැකි අතර, වඩා ස්ථායි SQL විමසුම් ගොඩනැගිය හැක.
IFNULL හි මූලික භාවිතය ගැන සමීපව බලමු.
2.1 Basic syntax of IFNULL
IFNULL ක්රියාවලියේ මූලික ව්යුහය පහත පරිදි වේ.
IFNULL(expression, fallback_value)
- expression : NULL සඳහා පරීක්ෂා කරන තීරුව හෝ අගය
- fallback_value : expression එක NULL නම් ආපසු ලබා දිය යුතු අගය (NULL නොවේ නම්, expression එකම ආපසු ලබා දේ)
උදාහරණයක් ලෙස, පහත SQL ප්රකාශය සලකන්න.
SELECT IFNULL(NULL, 'Fallback value');
මෙහි NULL නියම කර ඇති නිසා, ප්රතිඵලය 'Fallback value' බවට පත්වේ.
| Result |
|---|
| Fallback value |
අනෙක් පැත්තට, NULL නොවන අගයක් නියම කරන්නේ නම්, එම අගයම ආපසු ලබා දේ.
SELECT IFNULL('Hello', 'Fallback value');
| Result |
|---|
| Hello |
2.2 Key characteristics of IFNULL
IFNULL ක්රියාවලියට පහත ලක්ෂණ ඇත.
- එය NULL අගයන් විශේෂිත අගයක් වෙත පරිවර්තනය කළ හැක
- NULL අගයන් අඩංගු විය හැකි තීරුවලට විකල්ප පෙරනිමි අගයක් සකස් කළ හැක.
- එය සරල ව්යුහයක් භාවිතා කරයි
CASEප්රකාශයක් භාවිතා කිරීමේ වඩා ලේසි ලෙස ලියන්න පුළුවන්.
- දත්ත වර්ග ගැන සැලකිල්ලෙන් සිටිය යුතුය
IFNULLහි පරාමිතීන් එකම දත්ත වර්ගයෙහි වීම නිර්දේශිතය.
උදාහරණයක් ලෙස, පහත SQL එක දෝෂයක් ඇති කරයි.
SELECT IFNULL(100, 'Error');
කාරණය: සංඛ්යාත්මක වර්ගයක් (100) සහ පද වර්ගයක් (‘Error’) මිශ්ර කර ඇත.
මෙම අවස්ථාවේ, fallback අගයද සංඛ්යාත්මක විය යුතුය.
SELECT IFNULL(100, 0);
2.3 When you should use IFNULL
IFNULL ප්රයෝජනවත් වන ප්රායෝගික අවස්ථා කිහිපයක් මෙහි ඇත.
- NULL සඳහා පෙරනිමි අගයක් සකසන්න
- උදාහරණයක් ලෙස, සේවකයකුගේ බෝනස් NULL නම්, එය 0 ලෙස සකසන්න.
SELECT name, IFNULL(bonus, 0) AS bonus FROM employees;
- NULL ඇතුළත් ගණනයන් වලින් වැළැක්වන්න
- NULL තත්වය 그대로 ගණනය කළහොත්, ප්රතිඵලයත් NULL වේ.
IFNULLභාවිතයෙන් NULL ඉවත් කිරීමෙන් අවශ්ය ගණනය සිදු කළ හැක.SELECT name, salary, IFNULL(bonus, 0) AS bonus, salary + IFNULL(bonus, 0) AS total_income FROM employees;
- වාර්තා සහ එකතුකිරීම් වලදී NULL නිසි ලෙස සැකසීම
- විශ්ලේෂණයේ NULL පවතින විට, වැරදි වාර්තා උත්පාදනය විය හැක.
IFNULLමඟින් NULL විශේෂිත අගයක් සමඟ ප්රතිස්ථාපනය කිරීමෙන්, දත්තය සමාන්ය ලෙස සැකසිය හැක.
3. Practical examples of the IFNULL function
පෙර කොටසේ, IFNULL ක්රියාවලියේ මූලික කරුණු පැහැදිළි කළෙමු.
මෙම කොටසේ, සැබෑ දත්ත සමඟ එය භාවිතා කරන ප්රායෝගික උදාහරණ කිහිපයක් හඳුන්වා දෙමු.
3.1 Replace NULL values with a default value
වගුවක NULL අගයන් පවතින විට, ඒවා අනිච්චිත හැසිරීමකට හේතු විය හැක.
මෙය විසඳීමට, IFNULL භාවිතා කරමින් NULL අගයන් පෙරනිමි අගයක් සමඟ ප්රතිස්ථාපනය කළ හැක.
උදාහරණය: සේවකයකුගේ බෝනස් NULL නම්, පෙරනිමි අගය 0 ලෙස සකසන්න
SELECT name, IFNULL(bonus, 0) AS bonus
FROM employees;
ක්රියාත්මක කිරීමට පෙර දත්ත
| name | bonus |
|---|---|
| Sato | 5000 |
| Suzuki | NULL |
| Takahashi | 8000 |
IFNULL යෙදීමෙන් පසු
| name | bonus |
|---|---|
| Sato | 5000 |
| Suzuki | 0 |
| Takahashi | 8000 |
NULL එක 0 සමඟ ප්රතිස්ථාපනය කිරීමෙන් එකතු කිරීම සහ සම්බන්ධිත සැකසීම පහසු වේ.
3.2 NULL ඇතුළත් ගණනය කිරීම් වලින් වැළකී සිටීම
In MySQL, the result of a calculation that includes NULL becomes NULL.
Therefore, you need to use IFNULL to avoid NULL.
උදාහරණය: වැටුප් සහ බෝනස් එකතුව ගණනය කිරීම
SELECT name, salary, IFNULL(bonus, 0) AS bonus, salary + IFNULL(bonus, 0) AS total_income
FROM employees;
ක්රියාත්මක කිරීමට පෙර දත්ත
| name | salary | bonus |
|---|---|---|
| Sato | 300000 | 5000 |
| Suzuki | 280000 | NULL |
| Takahashi | 320000 | 8000 |
IFNULL යෙදීමෙන් පසු
| name | salary | bonus | total_income |
|---|---|---|---|
| Sato | 300000 | 5000 | 305000 |
| Suzuki | 280000 | 0 | 280000 |
| Takahashi | 320000 | 8000 | 328000 |
බෝනස් NULL නම්, එකතුව (salary + bonus) ද NULL වේ, නමුත් IFNULL යෙදීමෙන් MySQL NULL එක 0 ලෙස ගණනය කර නිවැරදිව ගණනය කරයි.
3.3 NULL වෙනත් පදයක් සමඟ ප්රතිස්ථාපනය කිරීම
You can set a default string not only for numbers, but also when the value is NULL.
උදාහරණය: ඊමේල් ලිපිනය නොමැති පරිශීලකයන්ට “Not registered” පෙන්වන්න
SELECT id, name, IFNULL(email, 'Not registered') AS email
FROM users;
ක්රියාත්මක කිරීමට පෙර දත්ත
| id | name | |
|---|---|---|
| 1 | Sato | satou@example.com |
| 2 | Suzuki | NULL |
| 3 | Takahashi | takahashi@example.com |
IFNULL යෙදීමෙන් පසු
| id | name | |
|---|---|---|
| 1 | Sato | satou@example.com |
| 2 | Suzuki | Not registered |
| 3 | Takahashi | takahashi@example.com |
NULL ලෙස තබා ඇත්නම්, ක්ෂේත්රය හිස් පෙනේ, නමුත් IFNULL එය “Not registered” ලෙස පැහැදිලි කරයි.
3.4 WHERE වාක්යයක IFNULL භාවිතා කිරීම
You can use IFNULL in a WHERE clause to filter based on conditions that include NULL values.
උදාහරණය: NULL අගයන් ඇති පරිශීලකයන් පමණක් ලබාගන්න
SELECT *
FROM users
WHERE IFNULL(email, '') = '';
This SQL treats email as '' (an empty string) when it is NULL, and retrieves only users whose email is NULL.
3.5 ORDER BY හි NULL අගයන් අවසානයේ තබන්න
Normally, when you use ORDER BY, NULL values may appear first, but you can use IFNULL to move them to the end.
උදාහරණය: NULL අගයන් ඇති පේළි අවසානයේ තබන්න
SELECT name, salary
FROM employees
ORDER BY IFNULL(salary, 0) ASC;
4. IFNULL සහ COALESCE අතර වෙනස්කම්
MySQL provides multiple functions for handling NULL values, and IFNULL and COALESCE are often compared.
Both replace NULL values with alternatives, but their usage and behavior differ.
In this section, we explain the differences between IFNULL and COALESCE and how to choose the right one.
4.1 COALESCE ක්රියාකාරකම කුමක්ද?
The COALESCE function returns the first non-NULL value among multiple arguments.
In other words, while IFNULL selects the non-NULL value between two values,
COALESCE differs by selecting the first non-NULL value from multiple candidates.
වින්යාසය
COALESCE(expr1, expr2, ... , exprN)
- වමෙන් දකුණට ඇගයී පළමු NULL නොවන අගය ලබා දෙයි
- සියලු පරාමිතීන්ම NULL නම් NULL ලබා දෙයි
උදාහරණය: COALESCE භාවිතයෙන් NULL ප්රතිස්ථාපනය
SELECT name, COALESCE(phone, email, 'Not registered') AS contact_info
FROM customers;
මෙම අවස්ථාවේ, අගයන් පහත පරිදි නියම වේ.
phoneNULL නොවේ නම්,phoneලබා දෙයි.phoneNULL වන අතරemailNULL නොවේ නම්,emailලබා දෙයි.phoneසහemailදෙකම NULL නම්,'Not registered'ලබා දෙයි.
4.2 IFNULL සහ COALESCE අතර වෙනස්කම්
| Comparison item | IFNULL | COALESCE |
|---|---|---|
| NULL handling | Returns the fallback value if one expression is NULL | Evaluates multiple expressions and returns the first non-NULL value |
| Number of arguments | Only 2 | 2 or more (multiple allowed) |
| Use case | Simple NULL replacement | NULL handling with priority order |
| Execution speed | Fast (compares only 2 values) | Slightly slower (evaluates multiple values in order) |
4.3 IFNULL සහ COALESCE ප්රායෝගික උදාහරණ
උදාහරණය 1: සරල NULL ප්රතිස්ථාපනය
With IFNULL, you can select the non-NULL value between two values.
SELECT name, IFNULL(phone, 'Not registered') AS contact_info
FROM customers;
ප්රතිඵලය
| name | phone | contact_info |
|---|---|---|
| Sato | 080-1234-5678 | 080-1234-5678 |
| Suzuki | NULL | Not registered |
උදාහරණය 2: පළමු ලබාගත හැකි NULL නොවන අගය ප්රමුඛ කරගන්න
With COALESCE, you can retrieve the first non-NULL value.
SELECT name, COALESCE(phone, email, 'Not registered') AS contact_info
FROM customers;
ප්රතිඵලය
| name | phone | contact_info | |
|---|---|---|---|
| Sato | 080-1234-5678 | satou@example.com | 080-1234-5678 |
| Suzuki | NULL | suzuki@example.com | suzuki@example.com |
| Takahashi | NULL | NULL | Not registered |
phoneNULL නොවේ නම්,phoneආපසු දෙන්නphoneNULL වන අතරemailNULL නොවේ නම්,emailආපසු දෙන්නphoneසහemailදෙකම NULL නම්,'Not registered'ආපසු දෙන්න
4.4 IFNULL සහ COALESCE අතර තේරීම කෙසේද
✔ IFNULL භාවිත කළ යුතු අවස්ථා
✅ NULL එක සරලව පෙරනිමි අගයක් සමඟ ප්රතිස්ථාපනය කිරීමට අවශ්ය නම්
✅ තර්ක දෙකක් පමණක් ප්රමාණවත් වන අවස්ථා (උදා: NULL → 0 බවට පරිවර්තනය)
✔ COALESCE භාවිත කළ යුතු අවස්ථා
✅ පළමු NULL නොවන අගය සොයා ගැනීමට අවශ්ය නම් (උදා: phone → email → “Not registered”)
✅ තර්ක තුනක් හෝ ඊට වැඩි ගණනක් ඇගයීමට අවශ්ය නම්
4.5 IFNULL සහ COALESCE අතර කාර්ය සාධන සැසඳීම
සාමාන්යයෙන්, IFNULL COALESCE ට වඩා වේගවත් වේ.
එය IFNULL තර්ක දෙකක් පමණක් ඇගයීම නිසා, COALESCE අනුපිළිවෙලින් බහුතර්ක ඇගයීම කරයි.
කාර්ය සාධන පරීක්ෂණය
IFNULL සහ COALESCE 1 මිලියන පේළි වලට යෙදූ විට, පහත පරිදි ප්රතිඵල දැකිය හැක.
| Function | Execution time (seconds) |
|---|---|
IFNULL | 0.02 |
COALESCE | 0.05 |
➡ දත්ත ප්රමාණය විශාල වන විට, IFNULL ට සුළු වේගයක් තිබිය හැක.
➡ කෙසේ වෙතත්, ඔබට එකම ප්රතිපෝෂණයක් පමණක් අවශ්ය නම් IFNULL භාවිත කරන්න; බහු ප්රතිපෝෂණ අවශ්ය නම් COALESCE භාවිත කරන්න.

5. MySQL හැර වෙනත් දත්ත ගබඩා වල NULL-සංස්කරණ ක්රියා
MySQL IFNULL ක්රියාවලිය NULL අගයන් සකස් කිරීමට ලබා දේ, නමුත් වෙනත් දත්ත ගබඩා කළමනාකරණ පද්ධති (DBMS) වෙනත් ක්රියා භාවිතා කරයි.
Oracle, PostgreSQL, SQL Server වැනි ප්රධාන දත්ත ගබඩා වල NULL-සංස්කරණය සඳහා MySQL වලට වඩා වෙනස් ක්රියා භාවිතා කිරීම සාමාන්යයයි.
මෙම කොටස MySQL හැර වෙනත් දත්ත ගබඩා වල NULL අගයන් කෙසේ සකස් කරන්නේද යන්න පැහැදිලි කරයි.
5.1 Oracle හි NULL-සංස්කරණය: NVL ක්රියාවලිය
Oracle හි, NVL ක්රියාවලිය MySQL හි IFNULL සමඟ සමාන ලෙස ලබා දේ.
NVL ක්රියාවලිය නියමිත අගය NULL වන විට වෙනත් අගයක් ආපසු දෙයි.
වින්යාසය
NVL(expression, fallback_value)
- expression : NULL සඳහා පරීක්ෂා කරන තීරුව හෝ අගය
- fallback_value : NULL වන විට ආපසු ලබා දිය යුතු අගය (NULL නොවේ නම්, expression එක 그대로 ආපසු දෙයි)
උදාහරණය
SELECT name, NVL(salary, 0) AS salary
FROM employees;
ප්රතිඵල
| name | salary |
|---|---|
| Sato | 5000 |
| Suzuki | 0 |
| Takahashi | 8000 |
NVL හි හැසිරීම MySQL හි IFNULL සමඟ සමාන බැවින්, Oracle හි ඔබට NVL භාවිතා කිරීම සරලයි.
5.2 PostgreSQL සහ SQL Server හි NULL-සංස්කරණය: COALESCE ක්රියාවලිය
PostgreSQL සහ SQL Server හි, COALESCE ක්රියාවලිය NULL අගයන් වෙනත් අගයන් සමඟ ප්රතිස්ථාපනය කිරීමට භාවිතා වේ.
මෙම ක්රියාවලිය බහු ප්රතිපෝෂක අතර පළමු NULL නොවන අගය ආපසු දෙයි.
වින්යාසය
COALESCE(expr1, expr2, ..., exprN)
- වමෙන් දකුණට පරික්ෂා කර පළමු NULL නොවන අගය ආපසු දෙයි
- සියලු තර්ක NULL නම් NULL ආපසු දෙයි
උදාහරණය
SELECT name, COALESCE(phone, email, 'Not registered') AS contact_info
FROM customers;
ප්රතිඵල
| name | phone | contact_info | |
|---|---|---|---|
| Sato | 080-1234-5678 | satou@example.com | 080-1234-5678 |
| Suzuki | NULL | suzuki@example.com | suzuki@example.com |
| Takahashi | NULL | NULL | Not registered |
ඉහත පෙන්වා ඇති පරිදි, PostgreSQL සහ SQL Server හි COALESCE භාවිතය MySQL හි IFNULL ට වඩා වඩාත් සවිස්තරාත්මක NULL-සංස්කරණයක් ලබා දෙයි.
5.3 දත්ත ගබඩා අතර NULL-සංස්කරණ ක්රියා සැසඳීම
| Database | NULL-handling function | Role |
|---|---|---|
| MySQL | IFNULL(expression, fallback_value) | Convert NULL to a fallback value |
| Oracle | NVL(expression, fallback_value) | Convert NULL to a fallback value (equivalent to IFNULL) |
| PostgreSQL / SQL Server | COALESCE(expr1, expr2, ...) | Return the first non-NULL value |
- සරල NULL-සංස්කරණය →
IFNULL(MySQL) හෝNVL(Oracle) - බහු ප්රතිපෝෂක අතර හොඳම අගය තෝරන්න →
COALESCE(PostgreSQL, SQL Server)
5.4 විවිධ DBMS අතර මාරු කිරීමේ සටහන්
විවිධ දත්ත ගබඩා අතර පද්ධති මාරු කරන විට, NULL-සංස්කරණ ක්රියා අතර වෙනස්කම් පිළිබඳ අවධානය යොමු කළ යුතුය.
විශේෂයෙන්, Oracle සිට MySQL වෙත මාරු කරන විට, NVL IFNULL ලෙස නැවත ලියවිය යුතුය.
මාරු කිරීමේදී නැවත ලියන උදාහරණ
- Oracle (NVL)
SELECT NVL(salary, 0) AS salary FROM employees;
- MySQL (IFNULL)
SELECT IFNULL(salary, 0) AS salary FROM employees;
- PostgreSQL / SQL Server (COALESCE)
SELECT COALESCE(salary, 0) AS salary FROM employees;
Also, because COALESCE can accept multiple arguments, it is more flexible than Oracle’s NVL or MySQL’s IFNULL.
During migration, it’s important to choose the correct function for the target database.
6. නිතර අසන ප්රශ්න (FAQ)
MySQL හි IFNULL ක්රියාකාරකම සහ NULL සැකසීම පිළිබඳ ප්රශ්න සංවර්ධකයින් සහ දත්ත ගබඩා පරිපාලකයින් සඳහා වැදගත් වේ.
මෙම කොටස IFNULL පිළිබඳ සාමාන්ය ප්රශ්න සාරාංශ කරයි.
ප්ර.1. IFNULL ක්රියාකාරකම සහ NVL ක්රියාකාරකම එකමද?
➡ ඔවුන් සමාන ක්රියාකාරකමක් ලබා දෙන අතර, ක්රියාකාරකමේ නාමය දත්ත ගබඩාව අනුව වෙනස් වේ.
| Database | NULL-handling function |
|---|---|
| MySQL | IFNULL(expression, fallback_value) |
| Oracle | NVL(expression, fallback_value) |
| PostgreSQL / SQL Server | COALESCE(expr1, expr2, ...) |
MySQL හි, IFNULL භාවිතා කරන්න; Oracle හි, NULL අගයන් ප්රතිස්ථාපන අගයක් වෙත පරිවර්තනය කිරීමට NVL භාවිතා කරන්න.
ප්ර.2. IFNULL සහ COALESCE අතර වෙනස කුමක්ද?
➡ IFNULL තනි ආර්ගුමෙන්ට් දෙක අතර non-NULL අගය ලබා දෙයි, එසේම
COALESCE බහු ආර්ගුමෙන්ට් අතර පළමු non-NULL අගය ලබා දෙයි.
| Function | Feature |
|---|---|
IFNULL(a, b) | If a is NULL, return b (only two arguments) |
COALESCE(a, b, c, ...) | Evaluates left to right and returns the first non-NULL value |
උදාහරණ
SELECT IFNULL(NULL, 'Fallback value'); -- Result: 'Fallback value'
SELECT COALESCE(NULL, NULL, 'First non-NULL value'); -- Result: 'First non-NULL value'
✔ ඔබ IFNULL භාවිතා කළ යුතු අවස්ථා
✅ NULL වන විට විශේෂිත පෙරනිමි අගයක් ලබා දීම (උදා: NULL නම් 0)
✅ ඔබ දෙක අගයන් පමණක් සැසඳේ නම්
✔ ඔබ COALESCE භාවිතා කළ යුතු අවස්ථා
✅ පළමු non-NULL අගය ලබා ගැනීම (උදා: දුරකථන → ඊමේල් → පෙරනිමි අගය)
✅ තුනක් හෝ ඊට වැඩි අගයන් ඇගයීමට අවශ්ය නම්
ප්ර.3. IFNULL සංඛ්යාත නොවන දත්ත වර්ග සමඟ භාවිතා කළ හැදියිද?
➡ ඔව්. IFNULL පද, දිනය, සංඛ්යා, සහ තවත් දත්ත වර්ග සමඟ භාවිතා කළ හැක.
උදාහරණ 1: පද භාවිතා කිරීම
SELECT name, IFNULL(email, 'Not registered') AS email
FROM users;
උදාහරණ 2: දිනයන් භාවිතා කිරීම
SELECT name, IFNULL(last_login, '2000-01-01') AS last_login
FROM users;
කෙසේ වෙතත්, වෙනස් දත්ත වර්ග (උදාහරණként සංඛ්යා සහ පද) මිශ්ර කිරීම දෝෂ ඇති කරවිය හැක, එබැවින් අවධානයෙන් සිටින්න.
SELECT IFNULL(100, 'Error'); -- May cause an error due to different data types
ප්ර.4. IFNULL භාවිතා කිරීම කාර්ය සාධනය අඩු කරද?
➡ සාමාන්යයෙන්, කාර්ය සාධන බලපෑම අඩුය, නමුත් විශාල දත්ත ප්රමාණයක් සැකසීමේදී එය වැදගත් විය හැක.
IFNULLසාමාන්යයෙන් වේගවත් වේ, එය තනිවම දෙකේ අගයන් පරීක්ෂා කරන බැවින්- කෙසේ වෙතත්, විශාල දත්ත කට්ටල (මිලියන ගණනක්) මත
IFNULLබහුලව භාවිතා කිරීම සමහර අවස්ථාවල ඉන්ඩෙක්ස් සුදුසුකම් අඩු කරයි
🔹 කාර්ය සාධන සුදුසුකම් උපදෙස්
- ඉන්ඩෙක්ස් නිසි ලෙස සකසන්න
IFNULL(column, 0) = 100වැනි විමසුම් සමහර අවස්ථාවල ඉන්ඩෙක්ස් භාවිතා වීම වැලැක්විය හැක- එක් ක්රමයක් ලෙස, ආරම්භයේම NULL වෙනුවට නිසි පෙරනිමි අගයක් සමඟ අගයන් ගබඩා කිරීම
IFNULLCOALESCEට වඩා අඩු බරයි
COALESCEබහු අගයන් අනුක්රමයෙන් ඇගයීම නිසා,IFNULLබොහෝ අවස්ථාවල වේගවත් විය හැක
ප්ර.5. IFNULL වෙනුවට CASE භාවිතා කළ හැදියිද?
➡ ඔව්. CASE සමඟ සමාන හැසිරීම ලබා ගත හැකි නමුත් එය වැඩි වචන ගණනක් ගනී.
IFNULL සමඟ
SELECT name, IFNULL(salary, 0) AS salary
FROM employees;
CASE සමඟ
SELECT name,
CASE WHEN salary IS NULL THEN 0 ELSE salary END AS salary
FROM employees;
✔ IFNULL සරල සහ භාවිතයට පහසුය
✔ CASE වඩා ලච්චනීය කොන්දේසි (උදා: non-NULL කොන්දේසිද ඇතුළත් කළ හැක) සහය දක්වයි
ප්ර.6. IFNULL WHERE වාක්යයේ භාවිතා කළ හැදියිද?
➡ ඔව්. IFNULL WHERE වාක්යය තුළ භාවිතා කළ හැක.
උදාහරණ: සෙවීමේදී NULL විශේෂිත අගයක් සමඟ ප්රතිස්ථාපනය කිරීම
SELECT * FROM users WHERE IFNULL(status, 'Not set') = 'Not set';
මෙය status NULL වන ලේඛන ලබා ගනී.
සාරාංශය
IFNULLසහNVLසමාන ක්රියාකාරකමක් ලබා දේ, නමුත් DBMS අනුව වෙනස් වේIFNULLඅග 2ක් ඇගයයි;COALESCEබහු අගයන් ඇගයයි- පද, දිනයන්, සංඛ්යා සහ තවත් දේවල් සමඟ ක්රියා කරයි
- විශාල දත්ත කට්ටල සඳහා, ඉන්ඩෙක්ස් සුදුසුකම් ගැන සැලකිල්ලට ගන්න
IFNULLවෙනුවටCASEභාවිතා කළ හැකIFNULLWHEREවාක්යයන් තුළද භාවිතා කළ හැක
7. නිගමනය
මෙම ලිපියේ, MySQL හි IFNULL ක්රියාවලිය විස්තරාත්මකව, NULL අගයන් හසුරවීම, අනෙකුත් ක්රියාවලීන් සමඟ ඇති වෙනස්කම්, සහ ප්රායෝගික උදාහරණ ඇතුළත් කර ඇත.
අවසානයේ, අපි ආවරණය කළ කරුණු කෙටිවින් සමාලෝචනය කරමු.
7.1 IFNULL ක්රියාවලිය කුමක්ද?
IFNULLනියමිත අගය NULL වන විට පසුබැසීමේ අගයක් ලබා දෙයි- වින්යාසය :
IFNULL(expression, fallback_value)
- NULL වලින් වැළැක්වීමෙන්, ගණනයේ දෝෂ සහ අස්ථානගත දත්ත ගැටළු වලින් වැළැක්විය හැක
7.2 IFNULL ප්රායෝගික උදාහරණ
- NULL එක පෙරනිමි අගයක් (0 හෝ විශේෂිත පදයක්) සමඟ ප්රතිස්ථාපනය කරන්න
SELECT name, IFNULL(bonus, 0) AS bonus FROM employees;
- NULL ඇතුළත් ගණනයන් නිවැරදිව හසුරවන්න
SELECT name, salary + IFNULL(bonus, 0) AS total_income FROM employees;
- NULL එක “ලියාපදිංචිය නොකළ” වැනි සුදුසු පදයක් වෙත පරිවර්තනය කරන්න
SELECT id, IFNULL(email, 'Not registered') AS email FROM users;
WHEREකොටස් තුළ NULL අගයන් පෙරහන් කිරීමට භාවිතා කරන්නSELECT * FROM users WHERE IFNULL(status, 'Not set') = 'Not set';
7.3 IFNULL සහ COALESCE අතර වෙනස්කම්
IFNULLතර්ක දෙක අතර non-NULL අගය ලබා දෙයිCOALESCEබහු තර්ක අතර පළමු non-NULL අගය ලබා දෙයි- කෙසේ තෝරාගත යුතුද
- සරල NULL හසුරවීම →
IFNULL - පළමු non-NULL අගය තෝරන්න →
COALESCE
7.4 අනෙකුත් DBMS වල NULL හසුරවීම
| Database | NULL-handling function |
|---|---|
| MySQL | IFNULL(expression, fallback_value) |
| Oracle | NVL(expression, fallback_value) |
| PostgreSQL / SQL Server | COALESCE(expr1, expr2, ...) |
- Oracle හි
NVLMySQL හිIFNULLසමඟ සමාන වේ - PostgreSQL සහ SQL Server සාමාන්යයෙන්
COALESCEභාවිතා කරයි - මාරු කිරීමේදී, ක්රියාවලීන් නිසි ලෙස ප්රතිස්ථාපනය කළ යුතුය
7.5 IFNULL සඳහා කාර්ය සාධනය සහ අවධානම්
IFNULLCOALESCEට වඩා අඩු බරයි- විශාල දත්ත කට්ටල සමඟ, දර්ශක සුදුසුකම් අඩුවීමෙන් කාර්ය සාධනය අඩුවිය හැක
- දත්ත වර්ග සමානව තබා ගැනීමට අවධානයෙන් සිටින්න (සංඛ්යාත්මක සහ පද වර්ග මිශ්ර නොකරන්න)
7.6 අවසාන සාරාංශය
- MySQL හි, NULL නිවැරදිව හසුරවීමට
IFNULLභාවිතා කරන්න - NULL මත බලපෑමක් නොමැතිව දත්ත සැකසිය හැක
COALESCEසහNVLසමඟ ඇති වෙනස්කම් තේරුම් ගනිමින් නිවැරදි ක්රියාවලිය භාවිතා කරන්න- දත්ත ගබඩා අතර මාරු කිරීමේදී, NULL හසුරවීමේ ක්රියාවලීන් අතර වෙනස්කම්ට අවධානය යොමු කරන්න


