VieTopikKhoá học
  • Games
  • Cá nhân
Tải app
© 2026 VieTopikChính sách bảo mậtĐiều khoản sử dụngCài appEnglish
  • Trang chủ
  • Học
  • Luyện thi
  • Cẩm nang
  • Games
  • Cá nhân
SQL với OracleĐọc dữ liệu
Bài 4/16
5 phút

NULL trong SQL

Bình luận
Nội dung bài · 5 mục
  1. 1.Khái niệm
  2. 2.Ví dụ
  3. 3.Thử ngay
  4. 4.Lỗi hay gặp
  5. 5.Tóm tắt

Khách Chi chưa cung cấp email. Ô email của Chi không phải chuỗi rỗng, cũng không phải số 0, mà là "không có gì". SQL gọi đó là NULL, và nó không hành xử như một giá trị bình thường.

Khái niệm

🕳️ NULL: giá trị cho biết dữ liệu không có hoặc chưa biết, khác với 0 hay chuỗi rỗng.

🩹 NVL: hàm của Oracle trả về giá trị thay thế khi gặp NULL, ví dụ NVL(email, 'chưa có').

Mọi phép so sánh với NULL bằng = hay <> đều cho kết quả không xác định (không đúng, cũng không sai), nên WHERE loại dòng đó. Muốn kiểm tra NULL phải dùng IS NULL hoặc IS NOT NULL. NVL tương tự toán tử ?? của C#.

Ví dụ

SELECT name
FROM customers
WHERE email IS NULL;
  • IS NULL tìm những dòng chưa có email. Kết quả là Chi.
  • IS NOT NULL thì ngược lại.

Thử ngay

SELECT name, NVL(email, 'chưa có') AS email
FROM customers
ORDER BY customer_id;

AS email đặt tên cho cột kết quả.

Đoán trước khi chạy: dòng của Chi hiện gì ở cột email?

Xem kết quả
NAME EMAIL
An an@shop.vn
Bình binh@shop.vn
Chi chưa có
Dũng dung@shop.vn

Email của Chi là NULL, nên NVL thay bằng "chưa có". Những dòng có email thì giữ nguyên.

Lỗi hay gặp

So sánh với NULL bằng dấu =. Câu lệnh chạy được nhưng không trả về dòng nào, kể cả dòng của Chi.

-- SAI — không bao giờ có kết quả
SELECT name FROM customers WHERE email = NULL;
-- ĐÚNG
SELECT name FROM customers WHERE email IS NULL;

Tìm chuỗi rỗng bằng = ''. Trong Oracle, '' chính là NULL, nên câu này cũng không trả về dòng nào.

-- SAI — '' là NULL, so sánh bằng = luôn loại dòng
SELECT name FROM customers WHERE email = '';
-- ĐÚNG — ô trống trong Oracle là NULL
SELECT name FROM customers WHERE email IS NULL;

Tóm tắt

  • NULL là không có dữ liệu, khác 0 và khác chuỗi rỗng.
  • Kiểm tra bằng IS NULL, IS NOT NULL. Dùng = NULL thì không bao giờ có kết quả.
  • NVL(cột, giá_trị) thay NULL bằng giá trị khác khi hiển thị.
  • Oracle coi '' là NULL.
Sắp xếp và phân trangHàm tổng hợp

Bình luận

Đang tải bình luận…

Nội dung bài

  1. 1.Khái niệm
  2. 2.Ví dụ
  3. 3.Thử ngay
  4. 4.Lỗi hay gặp
  5. 5.Tóm tắt