MySQL IFNULL ක්‍රියාකාරකම් මාර්ගෝපදේශය: NULL අගයන් ප්‍රතිස්ථාපනය (Oracle NVL විකල්පය)

目次

1. Introduction

දත්ත සමුදා සමඟ වැඩ කරන විට, NULL අගයන් සැකසීම ඉතා වැදගත් කරුණකි.
විශේෂයෙන්, Oracle හි NVL ක්‍රියාවලිය භාවිතා කරමින් සිටින අය MySQL වෙත මාරු වන විට NVL ලබා නොදෙන බව දැන ගැනීම අසාමාන්‍ය නොවේ.

MySQL හි, ඔබට IFNULL ක්‍රියාවලිය භාවිතා කරමින් NULL අගයන් නිසි ලෙස සැකසිය හැක, NVL වෙනුවට.
මෙම ලිපිය MySQL හි NULL අගයන් සමඟ කෙසේ වැඩ කළ යුතුද යන්න විස්තරාත්මකව පැහැදිලි කරයි, IFNULL භාවිතය සහ එය අනෙකුත් NULL-සැකසුම් ක්‍රියාවලීන්ගෙන් කෙසේ වෙනස්ද යන්න ආවරණය කරයි.

1.1 What is a NULL value?

දත්ත සමුදා වල, NULL යනු “කිසිදු අගයක් සකසා නොමැත” යන අර්ථයයි.
මෙය “0” හෝ “හිස් පදයක්” යන දෙකෙන් වෙනස් වන බැවින්, නිසි ලෙස සැකසීමට නොහැකි වීම අනපේක්ෂිත දෝෂ හෝ වැරදි විමසුම් ප්‍රතිඵල වෙත හේතු විය හැක.

උදාහරණයක් ලෙස, පහත පරිදි දත්තයක් ඔබට තිබේ.

IDNameAge
1Yamada25
2SatoNULL
3Suzuki30

ඉහත දත්තයේ, 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 ක්‍රියාවලියට පහත ලක්ෂණ ඇත.

  1. එය NULL අගයන් විශේෂිත අගයක් වෙත පරිවර්තනය කළ හැක
  • NULL අගයන් අඩංගු විය හැකි තීරුවලට විකල්ප පෙරනිමි අගයක් සකස් කළ හැක.
  1. එය සරල ව්‍යුහයක් භාවිතා කරයි
  • CASE ප්‍රකාශයක් භාවිතා කිරීමේ වඩා ලේසි ලෙස ලියන්න පුළුවන්.
  1. දත්ත වර්ග ගැන සැලකිල්ලෙන් සිටිය යුතුය
  • IFNULL හි පරාමිතීන් එකම දත්ත වර්ගයෙහි වීම නිර්දේශිතය.

උදාහරණයක් ලෙස, පහත SQL එක දෝෂයක් ඇති කරයි.

SELECT IFNULL(100, 'Error');

කාරණය: සංඛ්‍යාත්මක වර්ගයක් (100) සහ පද වර්ගයක් (‘Error’) මිශ්‍ර කර ඇත.
මෙම අවස්ථාවේ, fallback අගයද සංඛ්‍යාත්මක විය යුතුය.

SELECT IFNULL(100, 0);

2.3 When you should use IFNULL

IFNULL ප්‍රයෝජනවත් වන ප්‍රායෝගික අවස්ථා කිහිපයක් මෙහි ඇත.

  1. NULL සඳහා පෙරනිමි අගයක් සකසන්න
  • උදාහරණයක් ලෙස, සේවකයකුගේ බෝනස් NULL නම්, එය 0 ලෙස සකසන්න.
    SELECT name, IFNULL(bonus, 0) AS bonus
    FROM employees;
    
  1. NULL ඇතුළත් ගණනයන් වලින් වැළැක්වන්න
  • NULL තත්වය 그대로 ගණනය කළහොත්, ප්‍රතිඵලයත් NULL වේ.
  • IFNULL භාවිතයෙන් NULL ඉවත් කිරීමෙන් අවශ්‍ය ගණනය සිදු කළ හැක.
    SELECT name, salary, IFNULL(bonus, 0) AS bonus, salary + IFNULL(bonus, 0) AS total_income
    FROM employees;
    
  1. වාර්තා සහ එකතුකිරීම් වලදී 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;

ක්‍රියාත්මක කිරීමට පෙර දත්ත

namebonus
Sato5000
SuzukiNULL
Takahashi8000

IFNULL යෙදීමෙන් පසු

namebonus
Sato5000
Suzuki0
Takahashi8000

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;

ක්‍රියාත්මක කිරීමට පෙර දත්ත

namesalarybonus
Sato3000005000
Suzuki280000NULL
Takahashi3200008000

IFNULL යෙදීමෙන් පසු

namesalarybonustotal_income
Sato3000005000305000
Suzuki2800000280000
Takahashi3200008000328000

බෝනස් 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;

ක්‍රියාත්මක කිරීමට පෙර දත්ත

idnameemail
1Satosatou@example.com
2SuzukiNULL
3Takahashitakahashi@example.com

IFNULL යෙදීමෙන් පසු

idnameemail
1Satosatou@example.com
2SuzukiNot registered
3Takahashitakahashi@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;

මෙම අවස්ථාවේ, අගයන් පහත පරිදි නියම වේ.

  1. phone NULL නොවේ නම්, phone ලබා දෙයි.
  2. phone NULL වන අතර email NULL නොවේ නම්, email ලබා දෙයි.
  3. phone සහ email දෙකම NULL නම්, 'Not registered' ලබා දෙයි.

4.2 IFNULL සහ COALESCE අතර වෙනස්කම්

Comparison itemIFNULLCOALESCE
NULL handlingReturns the fallback value if one expression is NULLEvaluates multiple expressions and returns the first non-NULL value
Number of argumentsOnly 22 or more (multiple allowed)
Use caseSimple NULL replacementNULL handling with priority order
Execution speedFast (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;

ප්‍රතිඵලය

namephonecontact_info
Sato080-1234-5678080-1234-5678
SuzukiNULLNot 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;

ප්‍රතිඵලය

namephoneemailcontact_info
Sato080-1234-5678satou@example.com080-1234-5678
SuzukiNULLsuzuki@example.comsuzuki@example.com
TakahashiNULLNULLNot registered
  • phone NULL නොවේ නම්, phone ආපසු දෙන්න
  • phone NULL වන අතර email NULL නොවේ නම්, email ආපසු දෙන්න
  • phone සහ email දෙකම NULL නම්, 'Not registered' ආපසු දෙන්න

4.4 IFNULL සහ COALESCE අතර තේරීම කෙසේද

IFNULL භාවිත කළ යුතු අවස්ථා

NULL එක සරලව පෙරනිමි අගයක් සමඟ ප්‍රතිස්ථාපනය කිරීමට අවශ්‍ය නම්
තර්ක දෙකක් පමණක් ප්‍රමාණවත් වන අවස්ථා (උදා: NULL0 බවට පරිවර්තනය)

COALESCE භාවිත කළ යුතු අවස්ථා

පළමු NULL නොවන අගය සොයා ගැනීමට අවශ්‍ය නම් (උදා: phone → email → “Not registered”)
තර්ක තුනක් හෝ ඊට වැඩි ගණනක් ඇගයීමට අවශ්‍ය නම්

4.5 IFNULL සහ COALESCE අතර කාර්ය සාධන සැසඳීම

සාමාන්‍යයෙන්, IFNULL COALESCE ට වඩා වේගවත් වේ.
එය IFNULL තර්ක දෙකක් පමණක් ඇගයීම නිසා, COALESCE අනුපිළිවෙලින් බහුතර්ක ඇගයීම කරයි.

කාර්ය සාධන පරීක්ෂණය

IFNULL සහ COALESCE 1 මිලියන පේළි වලට යෙදූ විට, පහත පරිදි ප්‍රතිඵල දැකිය හැක.

FunctionExecution time (seconds)
IFNULL0.02
COALESCE0.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;

ප්‍රතිඵල

namesalary
Sato5000
Suzuki0
Takahashi8000

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;

ප්‍රතිඵල

namephoneemailcontact_info
Sato080-1234-5678satou@example.com080-1234-5678
SuzukiNULLsuzuki@example.comsuzuki@example.com
TakahashiNULLNULLNot registered

ඉහත පෙන්වා ඇති පරිදි, PostgreSQL සහ SQL Server හි COALESCE භාවිතය MySQL හි IFNULL ට වඩා වඩාත් සවිස්තරාත්මක NULL-සංස්කරණයක් ලබා දෙයි.

5.3 දත්ත ගබඩා අතර NULL-සංස්කරණ ක්‍රියා සැසඳීම

DatabaseNULL-handling functionRole
MySQLIFNULL(expression, fallback_value)Convert NULL to a fallback value
OracleNVL(expression, fallback_value)Convert NULL to a fallback value (equivalent to IFNULL)
PostgreSQL / SQL ServerCOALESCE(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 ක්‍රියාකාරකම එකමද?

ඔවුන් සමාන ක්‍රියාකාරකමක් ලබා දෙන අතර, ක්‍රියාකාරකමේ නාමය දත්ත ගබඩාව අනුව වෙනස් වේ.

DatabaseNULL-handling function
MySQLIFNULL(expression, fallback_value)
OracleNVL(expression, fallback_value)
PostgreSQL / SQL ServerCOALESCE(expr1, expr2, ...)

MySQL හි, IFNULL භාවිතා කරන්න; Oracle හි, NULL අගයන් ප්‍රතිස්ථාපන අගයක් වෙත පරිවර්තනය කිරීමට NVL භාවිතා කරන්න.

ප්‍ර.2. IFNULL සහ COALESCE අතර වෙනස කුමක්ද?

IFNULL තනි ආර්ගුමෙන්ට් දෙක අතර non-NULL අගය ලබා දෙයි, එසේම
COALESCE බහු ආර්ගුමෙන්ට් අතර පළමු non-NULL අගය ලබා දෙයි.

FunctionFeature
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 බහුලව භාවිතා කිරීම සමහර අවස්ථාවල ඉන්ඩෙක්ස් සුදුසුකම් අඩු කරයි

🔹 කාර්ය සාධන සුදුසුකම් උපදෙස්

  1. ඉන්ඩෙක්ස් නිසි ලෙස සකසන්න
  • IFNULL(column, 0) = 100 වැනි විමසුම් සමහර අවස්ථාවල ඉන්ඩෙක්ස් භාවිතා වීම වැලැක්විය හැක
  • එක් ක්‍රමයක් ලෙස, ආරම්භයේම NULL වෙනුවට නිසි පෙරනිමි අගයක් සමඟ අගයන් ගබඩා කිරීම
  1. IFNULL COALESCE ට වඩා අඩු බරයි
  • 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 භාවිතා කළ හැක
  • IFNULL WHERE වාක්‍යයන් තුළද භාවිතා කළ හැක

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 හසුරවීම

DatabaseNULL-handling function
MySQLIFNULL(expression, fallback_value)
OracleNVL(expression, fallback_value)
PostgreSQL / SQL ServerCOALESCE(expr1, expr2, ...)
  • Oracle හි NVL MySQL හි IFNULL සමඟ සමාන වේ
  • PostgreSQL සහ SQL Server සාමාන්‍යයෙන් COALESCE භාවිතා කරයි
  • මාරු කිරීමේදී, ක්‍රියාවලීන් නිසි ලෙස ප්‍රතිස්ථාපනය කළ යුතුය

7.5 IFNULL සඳහා කාර්ය සාධනය සහ අවධානම්

  • IFNULL COALESCE ට වඩා අඩු බරයි
  • විශාල දත්ත කට්ටල සමඟ, දර්ශක සුදුසුකම් අඩුවීමෙන් කාර්ය සාධනය අඩුවිය හැක
  • දත්ත වර්ග සමානව තබා ගැනීමට අවධානයෙන් සිටින්න (සංඛ්‍යාත්මක සහ පද වර්ග මිශ්‍ර නොකරන්න)

7.6 අවසාන සාරාංශය

  • MySQL හි, NULL නිවැරදිව හසුරවීමට IFNULL භාවිතා කරන්න
  • NULL මත බලපෑමක් නොමැතිව දත්ත සැකසිය හැක
  • COALESCE සහ NVL සමඟ ඇති වෙනස්කම් තේරුම් ගනිමින් නිවැරදි ක්‍රියාවලිය භාවිතා කරන්න
  • දත්ත ගබඩා අතර මාරු කිරීමේදී, NULL හසුරවීමේ ක්‍රියාවලීන් අතර වෙනස්කම්ට අවධානය යොමු කරන්න