การทำงานกับค่า NULL

Oracle SQL เบื้องต้น

Hadrien Lacroix

Content Developer

ค่า NULL คืออะไร?

  • ไม่มีค่า
  • ไม่เหมือนกับ 0
  • นิพจน์คณิตศาสตร์ที่มี NULL จะให้ผลลัพธ์เป็น NULL
    • NULL + 10 = NULL
  • ฟังก์ชัน Aggregate ส่วนใหญ่จะละเว้นค่า NULL
    • COUNT ไม่นับค่า NULL ในคอลัมน์
Oracle SQL เบื้องต้น

ทำไมต้องใส่ใจค่า NULL?

ข้อมูลในโลกจริงไม่สมบูรณ์เสมอไป

  • ทำความสะอาดข้อมูล
  • วิเคราะห์ข้อมูลที่หายไป
Oracle SQL เบื้องต้น

การตรวจสอบว่าค่าเป็น NULL หรือไม่

ไม่สามารถใช้ = ตรวจสอบค่า NULL ได้

ให้ใช้แทน:

  • IS NULL
    SELECT * FROM Customer WHERE LastName IS NULL
    
  • IS NOT NULL
    SELECT * FROM Customer WHERE LastName IS NOT NULL
    
Oracle SQL เบื้องต้น

NVL

NVL(x, y): แปลง x ซึ่งอาจเป็นค่า null ให้เป็น y ซึ่งเป็นค่าที่ไม่ใช่ null

SELECT NVL(HireDate, '11/19/2004')
FROM Employee
Oracle SQL เบื้องต้น

NULLIF

NULLIF(x, y): เปรียบเทียบ x กับ y แล้วคืนค่า

  • NULL ถ้า x=y
  • x ถ้าไม่เท่ากัน
SELECT c.CustomerId, i.BillingCity, c.City, NULLIF(i.BillingCity, c.City) 
FROM Invoice i, Customer c
| CustomerId | BillingCity | City      | NULLIF |
|------------|-------------|-----------|--------|
| 48         | Oslo        | Amsterdam | Oslo   |
| 49         | Boston      | Vienne    | Boston |
| 59         | London      | London    | NULL   |
Oracle SQL เบื้องต้น

COALESCE

COALESCE: คืนค่าที่ไม่ใช่ null ค่าแรกในลิสต์

SELECT CustomerId, COALESCE(phone, email, fax) AS ContactMethod
FROM Customer
| CustomerId | ContactMethod           |
|------------|-------------------------|
| 59         | +91 080 22289999        |
| 58         | [email protected] |
| 57         | +56 (0)2 635 4444       |
Oracle SQL เบื้องต้น

มาฝึกกันเถอะ!

Oracle SQL เบื้องต้น

Preparing Video For Download...