Hướng dẫn hàm IFNULL MySQL: Thay thế giá trị NULL (Giải pháp thay thế Oracle NVL)

目次

1. Giới thiệu

Khi làm việc với cơ sở dữ liệu, việc xử lý giá trị NULL là một điểm quan trọng.
Đặc biệt, không hiếm gặp những người đã quen với hàm NVL của Oracle nhận ra rằng NVL không có sẵn khi chuyển sang MySQL.

Trong MySQL, bạn có thể xử lý giá trị NULL một cách đúng đắn bằng cách sử dụng hàm IFNULL thay cho NVL.
Bài viết này giải thích cách làm việc với giá trị NULL trong MySQL chi tiết, bao gồm cách sử dụng IFNULL và cách nó khác với các hàm xử lý NULL khác.

1.1 Giá trị NULL là gì?

Trong cơ sở dữ liệu, NULL có nghĩa là “không có giá trị nào được đặt”.
Vì điều này khác với “0” hoặc một “chuỗi rỗng”, việc không xử lý đúng có thể dẫn đến lỗi không mong muốn hoặc kết quả truy vấn sai lệch.

Ví dụ, giả sử bạn có dữ liệu như sau.

IDNameAge
1Yamada25
2SatoNULL
3Suzuki30

Trong dữ liệu trên, tuổi của ID “2” (Sato) là NULL.
Nếu bạn thực hiện các phép tính như hiện tại, bạn có thể gặp lỗi hoặc kết quả không như mong đợi.

1.2 MySQL xử lý giá trị NULL như thế nào

2. Hàm IFNULL là gì?

MySQL cung cấp hàm IFNULL như một hàm để thay thế giá trị NULL bằng một giá trị khác.
Nó thực hiện vai trò tương tự như hàm NVL của Oracle.

Bằng cách xử lý giá trị NULL một cách thích hợp, bạn có thể ngăn ngừa các vấn đề tính toán do dữ liệu thiếu và xây dựng các truy vấn SQL ổn định hơn.
Hãy cùng xem xét kỹ hơn cách sử dụng cơ bản của IFNULL.

2.1 Cú pháp cơ bản của IFNULL

Cú pháp cơ bản của hàm IFNULL như sau.

IFNULL(expression, fallback_value)
  • expression : Cột hoặc giá trị cần kiểm tra NULL
  • fallback_value : Giá trị sẽ trả về khi biểu thức là NULL (nếu không phải NULL, biểu thức sẽ được trả về nguyên trạng)

Ví dụ, xem xét câu lệnh SQL sau.

SELECT IFNULL(NULL, 'Fallback value');

Trong trường hợp này, vì được chỉ định NULL, kết quả sẽ là 'Fallback value'.

Result
Fallback value

Ngược lại, nếu bạn chỉ định một giá trị không phải NULL, giá trị đó sẽ được trả về nguyên trạng.

SELECT IFNULL('Hello', 'Fallback value');
Result
Hello

2.2 Các đặc điểm chính của IFNULL

Hàm IFNULL có các đặc điểm sau.

  1. Có thể chuyển đổi giá trị NULL thành một giá trị cụ thể
  • Bạn có thể đặt một giá trị mặc định thay thế cho các cột có thể chứa NULL.
  1. Sử dụng cú pháp đơn giản
  • Nó đơn giản hơn so với việc dùng biểu thức CASE.
  1. Cần cân nhắc kiểu dữ liệu
  • Khuyến nghị các đối số của IFNULL phải cùng kiểu dữ liệu .

Ví dụ, câu SQL sau có thể gây lỗi.

SELECT IFNULL(100, 'Error');

Lý do: Kiểu số (100) và kiểu chuỗi (‘Error’) bị trộn lẫn.
Trong trường hợp này, giá trị dự phòng cũng nên là kiểu số.

SELECT IFNULL(100, 0);

2.3 Khi nào nên sử dụng IFNULL

Dưới đây là một số tình huống thực tế mà IFNULL hữu ích.

  1. Đặt giá trị mặc định cho NULL
  • Ví dụ, nếu tiền thưởng của một nhân viên là NULL, đặt nó thành 0.
    SELECT name, IFNULL(bonus, 0) AS bonus
    FROM employees;
    
  1. Tránh các phép tính liên quan đến NULL
  • Nếu bạn tính toán với NULL nguyên trạng, kết quả cũng sẽ là NULL.
  • Sử dụng IFNULL để tránh NULL cho phép thực hiện phép tính mong muốn.
    SELECT name, salary, IFNULL(bonus, 0) AS bonus, salary + IFNULL(bonus, 0) AS total_income
    FROM employees;
    
  1. Xử lý NULL một cách đúng đắn trong báo cáo và tổng hợp
  • Nếu NULL xuất hiện trong quá trình phân tích, báo cáo có thể sai lệch.
  • Bằng cách thay thế NULL bằng một giá trị cụ thể bằng IFNULL, bạn có thể xử lý dữ liệu một cách nhất quán.

3. Các ví dụ thực tế của hàm IFNULL

Trong phần trước, chúng ta đã giải thích các kiến thức cơ bản về hàm IFNULL.
Trong phần này, chúng ta sẽ giới thiệu các ví dụ cụ thể về việc sử dụng nó với dữ liệu thực tế.

3.1 Thay thế giá trị NULL bằng giá trị mặc định

Nếu một bảng chứa các giá trị NULL, chúng có thể gây ra hành vi không mong muốn.
Để giải quyết vấn đề này, bạn có thể sử dụng IFNULL để thay thế NULL bằng một giá trị mặc định.

Ví dụ: Nếu tiền thưởng của nhân viên là NULL, đặt giá trị mặc định là 0

SELECT name, IFNULL(bonus, 0) AS bonus
FROM employees;

Dữ liệu trước khi thực thi

namebonus
Sato5000
SuzukiNULL
Takahashi8000

Sau khi áp dụng IFNULL

namebonus
Sato5000
Suzuki0
Takahashi8000

Thay thế NULL bằng 0 giúp việc tổng hợp và các xử lý liên quan trở nên mượt mà hơn.

3.2 Tránh các phép tính bao gồm NULL

Trong MySQL, kết quả của một phép tính bao gồm NULL sẽ trở thành NULL.
Do đó, bạn cần sử dụng IFNULL để tránh NULL.

Ví dụ: Tính tổng lương và tiền thưởng

SELECT name, salary, IFNULL(bonus, 0) AS bonus, salary + IFNULL(bonus, 0) AS total_income
FROM employees;

Dữ liệu trước khi thực thi

namesalarybonus
Sato3000005000
Suzuki280000NULL
Takahashi3200008000

Sau khi áp dụng IFNULL

namesalarybonustotal_income
Sato3000005000305000
Suzuki2800000280000
Takahashi3200008000328000

Nếu tiền thưởng là NULL, tổng (salary + bonus) cũng sẽ trở thành NULL,
nhưng bằng cách áp dụng IFNULL, MySQL coi NULL là 0 và tính toán đúng.

3.3 Thay thế NULL bằng một chuỗi khác

Bạn có thể đặt một chuỗi mặc định không chỉ cho số, mà còn khi giá trị là NULL.

Ví dụ: Hiển thị “Chưa đăng ký” cho người dùng không có địa chỉ email

SELECT id, name, IFNULL(email, 'Not registered') AS email
FROM users;

Dữ liệu trước khi thực thi

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

Sau khi áp dụng IFNULL

idnameemail
1Satosatou@example.com
2SuzukiNot registered
3Takahashitakahashi@example.com

Nếu để lại là NULL, trường sẽ hiển thị trống, nhưng IFNULL làm cho nó rõ ràng với “Chưa đăng ký”.

3.4 Sử dụng IFNULL trong mệnh đề WHERE

Bạn có thể sử dụng IFNULL trong mệnh đề WHERE để lọc dựa trên các điều kiện bao gồm giá trị NULL.

Ví dụ: Lấy chỉ những người dùng có giá trị NULL

SELECT *
FROM users
WHERE IFNULL(email, '') = '';

SQL này coi email'' (chuỗi rỗng) khi nó là NULL, và chỉ lấy những người dùng có email là NULL.

3.5 Đặt giá trị NULL cuối cùng trong ORDER BY

Thông thường, khi bạn sử dụng ORDER BY, các giá trị NULL có thể xuất hiện đầu tiên, nhưng bạn có thể dùng IFNULL để đưa chúng về cuối.

Ví dụ: Đặt các hàng có giá trị NULL ở cuối

SELECT name, salary
FROM employees
ORDER BY IFNULL(salary, 0) ASC;

4. Sự khác nhau giữa IFNULLCOALESCE

MySQL cung cấp nhiều hàm để xử lý giá trị NULL, và IFNULLCOALESCE thường được so sánh.
Cả hai đều thay thế giá trị NULL bằng các giá trị thay thế, nhưng cách sử dụng và hành vi của chúng khác nhau.

Trong phần này, chúng tôi giải thích sự khác nhau giữa IFNULLCOALESCE và cách chọn đúng.

4.1 Hàm COALESCE là gì?

Hàm COALESCE trả về giá trị không phải NULL đầu tiên trong số các đối số.
Nói cách khác, trong khi IFNULL chọn giá trị không phải NULL giữa hai giá trị,
COALESCE khác biệt bằng cách chọn giá trị không phải NULL đầu tiên trong số nhiều ứng cử viên.

Cú pháp

COALESCE(expr1, expr2, ... , exprN)
  • Đánh giá từ trái sang phảitrả về giá trị không phải NULL đầu tiên
  • Trả về NULL nếu tất cả các đối số đều là NULL

Ví dụ: Thay thế NULL bằng COALESCE

SELECT name, COALESCE(phone, email, 'Not registered') AS contact_info
FROM customers;

Trong trường hợp này, các giá trị được xác định như sau.

  1. Nếu phone không phải NULL, trả về phone.
  2. Nếu phone là NULL và email không phải NULL, trả về email.
  3. Nếu cả phoneemail đều là NULL, trả về 'Chưa đăng ký'.

4.2 Sự khác nhau giữa IFNULLCOALESCE

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 Các ví dụ thực tế của IFNULLCOALESCE

Ví dụ 1: Thay thế NULL đơn giản

Với IFNULL, bạn có thể chọn giá trị không phải NULL giữa hai giá trị.

SELECT name, IFNULL(phone, 'Not registered') AS contact_info
FROM customers;

Kết quả

namephonecontact_info
Sato080-1234-5678080-1234-5678
SuzukiNULLNot registered

Ví dụ 2: Ưu tiên giá trị không phải NULL đầu tiên có sẵn

Với COALESCE, bạn có thể lấy giá trị không phải NULL đầu tiên.

SELECT name, COALESCE(phone, email, 'Not registered') AS contact_info
FROM customers;

Kết quả

namephoneemailcontact_info
Sato080-1234-5678satou@example.com080-1234-5678
SuzukiNULLsuzuki@example.comsuzuki@example.com
TakahashiNULLNULLNot registered
  • Nếu phone không phải NULL, trả về phone
  • Nếu phone là NULL và email không phải NULL, trả về email
  • Nếu cả phoneemail đều là NULL, trả về 'Not registered'

4.4 Cách chọn giữa IFNULLCOALESCE

✔ Khi bạn nên sử dụng IFNULL

Khi bạn muốn thay thế NULL bằng một giá trị mặc định một cách đơn giản
Khi hai đối số là đủ (ví dụ, chuyển NULL thành 0)

✔ Khi bạn nên sử dụng COALESCE

Khi bạn muốn tìm giá trị không phải NULL đầu tiên (ví dụ, phone → email → “Not registered”)
Khi bạn cần đánh giá ba hoặc nhiều hơn các giá trị

4.5 So sánh hiệu năng giữa IFNULLCOALESCE

Nói chung, IFNULL nhanh hơn COALESCE.
Điều này là do IFNULL chỉ đánh giá hai giá trị, trong khi COALESCE đánh giá nhiều giá trị theo thứ tự.

Kiểm tra hiệu năng

Khi áp dụng IFNULLCOALESCE cho 1 triệu dòng, bạn có thể thấy kết quả như sau.

FunctionExecution time (seconds)
IFNULL0.02
COALESCE0.05

Với khối lượng dữ liệu lớn, IFNULL có thể nhanh hơn một chút.
➡ Tuy nhiên, nếu bạn chỉ cần một giá trị dự phòng, hãy sử dụng IFNULL; nếu bạn muốn nhiều ứng cử viên, hãy sử dụng COALESCE.

5. Các hàm xử lý NULL trong các cơ sở dữ liệu khác ngoài MySQL

MySQL cung cấp hàm IFNULL để xử lý các giá trị NULL, nhưng các hệ quản trị cơ sở dữ liệu (DBMS) khác lại sử dụng các hàm khác.
Trong các cơ sở dữ liệu lớn như Oracle, PostgreSQL và SQL Server, thường sử dụng các hàm khác với MySQL để xử lý NULL.

Phần này giải thích cách các giá trị NULL được xử lý trong các cơ sở dữ liệu ngoài MySQL.

5.1 Xử lý NULL trong Oracle: hàm NVL

Trong Oracle, hàm NVL được cung cấp như là tương đương với IFNULL của MySQL.
Hàm NVL trả về một giá trị khác khi giá trị được chỉ định là NULL.

Cú pháp

NVL(expression, fallback_value)
  • expression : Cột hoặc giá trị cần kiểm tra NULL
  • fallback_value : Giá trị sẽ trả về khi là NULL (nếu không phải NULL, biểu thức sẽ được trả về nguyên vẹn)

Ví dụ

SELECT name, NVL(salary, 0) AS salary
FROM employees;

Kết quả

namesalary
Sato5000
Suzuki0
Takahashi8000

Hành vi của NVL gần như giống với IFNULL của MySQL, vì vậy trong Oracle bạn có thể đơn giản sử dụng NVL.

5.2 Xử lý NULL trong PostgreSQL và SQL Server: hàm COALESCE

Trong PostgreSQL và SQL Server, hàm COALESCE được sử dụng để thay thế các giá trị NULL bằng các giá trị thay thế.
Hàm này có thể trả về giá trị không phải NULL đầu tiên trong số nhiều ứng cử viên.

Cú pháp

COALESCE(expr1, expr2, ..., exprN)
  • Đánh giá từ trái sang phải và trả về giá trị không phải NULL đầu tiên
  • Trả về NULL nếu tất cả các đối số đều là NULL

Ví dụ

SELECT name, COALESCE(phone, email, 'Not registered') AS contact_info
FROM customers;

Kết quả

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

Như đã chỉ ra ở trên, trong PostgreSQL và SQL Server, việc sử dụng COALESCE cho phép xử lý NULL linh hoạt hơn so với IFNULL của MySQL.

5.3 So sánh các hàm xử lý NULL giữa các cơ sở dữ liệu

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
  • Xử lý NULL đơn giảnIFNULL (MySQL) hoặc NVL (Oracle)
  • Chọn giá trị tốt nhất từ nhiều ứng cử viênCOALESCE (PostgreSQL, SQL Server)

5.4 Lưu ý khi di chuyển giữa các DBMS

Khi di chuyển hệ thống giữa các cơ sở dữ liệu khác nhau, bạn cần chú ý đến sự khác biệt trong các hàm xử lý NULL.
Đặc biệt, khi di chuyển từ Oracle sang MySQL, bạn phải viết lại NVL thành IFNULL.

Ví dụ viết lại khi di chuyển

  • 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. Câu hỏi thường gặp (FAQ)

Các câu hỏi về hàm IFNULL của MySQL và việc xử lý NULL là quan trọng đối với các nhà phát triển và quản trị viên cơ sở dữ liệu.
Phần này tóm tắt các câu hỏi thường gặp về IFNULL.

Câu hỏi 1. Hàm IFNULL và hàm NVL có giống nhau không?

Chúng cung cấp gần như cùng một chức năng, nhưng tên hàm khác nhau tùy vào hệ quản trị cơ sở dữ liệu.

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

Trong MySQL, sử dụng IFNULL; trong Oracle, sử dụng NVL để chuyển đổi giá trị NULL thành giá trị dự phòng.

Câu hỏi 2. Sự khác biệt giữa IFNULLCOALESCE là gì?

IFNULL trả về giá trị không phải NULL trong hai đối số, trong khi
COALESCE trả về giá trị không phải NULL đầu tiên trong số nhiều đối số.

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

Ví dụ

SELECT IFNULL(NULL, 'Fallback value'); -- Result: 'Fallback value'
SELECT COALESCE(NULL, NULL, 'First non-NULL value'); -- Result: 'First non-NULL value'

✔ Khi nào nên sử dụng IFNULL
✅ Trả về một giá trị mặc định cụ thể khi NULL (ví dụ, nếu NULL thì 0)
✅ Khi bạn chỉ so sánh hai giá trị

✔ Khi nào nên sử dụng COALESCE
✅ Lấy giá trị không phải NULL đầu tiên (ví dụ, điện thoại → email → giá trị mặc định)
✅ Khi bạn cần đánh giá ba hoặc nhiều hơn các giá trị

Câu hỏi 3. IFNULL có thể được sử dụng với các kiểu dữ liệu khác ngoài số không?

Có. IFNULL có thể được sử dụng với chuỗi, ngày tháng, số và các kiểu khác.

Ví dụ 1: Sử dụng chuỗi

SELECT name, IFNULL(email, 'Not registered') AS email
FROM users;

Ví dụ 2: Sử dụng ngày tháng

SELECT name, IFNULL(last_login, '2000-01-01') AS last_login
FROM users;

Tuy nhiên, việc trộn các kiểu dữ liệu khác nhau (như số và chuỗi) có thể gây lỗi, vì vậy hãy cẩn thận.

SELECT IFNULL(100, 'Error'); -- May cause an error due to different data types

Câu hỏi 4. Việc sử dụng IFNULL có làm giảm hiệu năng không?

Nói chung, tác động đến hiệu năng là tối thiểu, nhưng có thể đáng chú ý khi xử lý khối lượng dữ liệu lớn.

  • IFNULL thường nhanh vì nó chỉ kiểm tra hai giá trị
  • Tuy nhiên, việc sử dụng IFNULL quá mức trên các bộ dữ liệu rất lớn (hàng triệu dòng) có thể ảnh hưởng đến tối ưu hoá chỉ mục trong một số trường hợp

🔹 Mẹo tối ưu hoá hiệu năng

  1. Thiết lập chỉ mục một cách phù hợp
  • Các truy vấn như IFNULL(column, 0) = 100 có thể ngăn chỉ mục được sử dụng trong một số trường hợp
  • Một cách tiếp cận là lưu giá trị với một mặc định phù hợp thay vì NULL ngay từ đầu
  1. IFNULL nhẹ hơn COALESCE
  • COALESCE đánh giá nhiều giá trị theo thứ tự, IFNULL có thể nhanh hơn trong nhiều trường hợp

Câu hỏi 5. Bạn có thể sử dụng CASE thay cho IFNULL không?

Có. Bạn có thể đạt được hành vi tương tự với CASE, nhưng nó sẽ dài hơn.

Với IFNULL

SELECT name, IFNULL(salary, 0) AS salary
FROM employees;

Với CASE

SELECT name,
  CASE WHEN salary IS NULL THEN 0 ELSE salary END AS salary
FROM employees;

IFNULL ngắn gọn và dễ sử dụng
CASE hỗ trợ các điều kiện linh hoạt hơn (ví dụ, bạn có thể bao gồm các điều kiện không phải NULL nữa)

Câu hỏi 6. IFNULL có thể được sử dụng trong mệnh đề WHERE không?

Có. IFNULL có thể được sử dụng trong mệnh đề WHERE.

Ví dụ: Thay thế NULL bằng một giá trị cụ thể khi tìm kiếm

SELECT * FROM users WHERE IFNULL(status, 'Not set') = 'Not set';

Điều này sẽ truy xuất các bản ghi mà statusNULL.

Tóm tắt

  • IFNULLNVL có gần như cùng một chức năng, nhưng khác nhau tùy DBMS
  • IFNULL đánh giá 2 giá trị; COALESCE đánh giá nhiều giá trị
  • Hoạt động với chuỗi, ngày tháng, số và các kiểu khác
  • Đối với bộ dữ liệu lớn, hãy cân nhắc tối ưu hoá chỉ mục
  • Bạn có thể sử dụng CASE thay cho IFNULL
  • IFNULL cũng có thể được sử dụng trong các mệnh đề WHERE

7. Kết luận

Trong bài viết này, chúng tôi đã trình bày chi tiết hàm IFNULL của MySQL, bao gồm cách xử lý giá trị NULL, cách nó khác với các hàm khác, và các ví dụ thực tế.
Cuối cùng, hãy cùng tổng kết ngắn gọn những gì chúng ta đã đề cập.

7.1 Hàm IFNULL là gì?

  • IFNULL trả về một giá trị dự phòng khi giá trị được chỉ định là NULL
  • Cú pháp :
    IFNULL(expression, fallback_value)
    
  • Bằng cách tránh NULL, bạn có thể ngăn ngừa lỗi tính toán và các vấn đề dữ liệu thiếu

7.2 Các ví dụ thực tế của IFNULL

  • Thay thế NULL bằng một giá trị mặc định (0 hoặc một chuỗi cụ thể)
    SELECT name, IFNULL(bonus, 0) AS bonus FROM employees;
    
  • Xử lý đúng các phép tính có bao gồm NULL
    SELECT name, salary + IFNULL(bonus, 0) AS total_income FROM employees;
    
  • Chuyển đổi NULL thành một chuỗi thích hợp như “Chưa đăng ký”
    SELECT id, IFNULL(email, 'Not registered') AS email FROM users;
    
  • Sử dụng trong các mệnh đề WHERE để lọc các giá trị NULL
    SELECT * FROM users WHERE IFNULL(status, 'Not set') = 'Not set';
    

7.3 Sự khác nhau giữa IFNULLCOALESCE

  • IFNULL trả về giá trị không phải NULL giữa hai đối số
  • COALESCE trả về giá trị không phải NULL đầu tiên trong số nhiều đối số
  • Cách lựa chọn
  • Xử lý NULL đơn giản → IFNULL
  • Chọn giá trị không phải NULL đầu tiên → COALESCE

7.4 Xử lý NULL trong các hệ quản trị CSDL khác

DatabaseNULL-handling function
MySQLIFNULL(expression, fallback_value)
OracleNVL(expression, fallback_value)
PostgreSQL / SQL ServerCOALESCE(expr1, expr2, ...)
  • NVL của Oracle gần giống với IFNULL của MySQL
  • PostgreSQL và SQL Server thường sử dụng COALESCE
  • Trong quá trình di chuyển, bạn phải thay thế các hàm một cách thích hợp

7.5 Hiệu năng và lưu ý khi sử dụng IFNULL

  • IFNULL nhẹ hơn COALESCE
  • Với bộ dữ liệu lớn, hiệu năng có thể giảm nếu tối ưu hoá chỉ mục bị ảnh hưởng
  • Cẩn thận giữ cho kiểu dữ liệu nhất quán (không trộn lẫn kiểu số và chuỗi)

7.6 Những điểm cần nhớ cuối cùng

  • Trong MySQL, sử dụng IFNULL để xử lý NULL một cách đúng đắn
  • Bạn có thể xử lý dữ liệu mà không bị ảnh hưởng bởi NULL
  • Hiểu sự khác nhau so với COALESCENVL và sử dụng hàm phù hợp
  • Khi di chuyển giữa các cơ sở dữ liệu, chú ý đến sự khác nhau trong các hàm xử lý NULL