ค่า Null คือฟิลด์ที่ถูกเว้นว่างไว้หรือไม่มีค่าที่กำหนด
ค่า NULL เป็นเรื่องปกติในฐานข้อมูล โดยเฉพาะอย่างยิ่งเมื่อนำเข้าข้อมูลภายนอก ดังนั้น เว้นแต่ว่าคอลัมน์จะมีข้อจำกัดในการป้องกันค่า NULL โปรแกรมฐานข้อมูลมักจะใช้ค่า NULL สำหรับค่าที่ขาดหายไป
แม้ว่าค่า NULL จะเป็นค่าทั่วไป แต่ก็สามารถนำไปสู่ปัญหาฐานข้อมูลได้ เนื่องจากฐานข้อมูลไม่มีค่าให้ใช้งาน ดังนั้นจึงเป็นแนวทางปฏิบัติที่ดีที่จะใช้การดำเนินการเพื่อจัดการกับค่า NULL ในแบบสอบถามของคุณ
ในโพสต์นี้ เราจะเรียนรู้วิธีการแปลงค่า NULL ในตารางที่กำหนดให้มีค่าเริ่มต้นที่มีโอกาสน้อยที่จะทำให้เกิดข้อผิดพลาดในการดำเนินการในฐานข้อมูลของคุณ
ฟังก์ชัน Oracle NVL
ฟังก์ชันนี้ช่วยให้เราสามารถแทนที่ค่า NULL ด้วยค่าที่มีความหมายมากขึ้น ไวยากรณ์ของฟังก์ชันแสดงไว้ด้านล่าง:
เอ็นวีแอล ( expr1, expr2 ) ;
ฟังก์ชันยอมรับสองอาร์กิวเมนต์หลัก:
expr1 และ expr2 – พารามิเตอร์นี้กำหนดค่าที่จะทดสอบสำหรับค่า NULL ถ้าค่าของ expr1 เป็น NULL ฟังก์ชันจะคืนค่าของ expr2
นิพจน์ทั้งสองสามารถมีประเภทข้อมูลที่คล้ายกันหรือต่างกันได้ ถ้าชนิดข้อมูลที่สอดคล้องกันแตกต่างกัน โปรแกรมฐานข้อมูลอาจทำการแปลงโดยปริยายเพื่อให้เข้ากันได้กับชนิดข้อมูล ถ้าไม่สามารถแปลงชนิดข้อมูลที่เกี่ยวข้องได้ โปรแกรมฐานข้อมูลจะส่งข้อผิดพลาด
ตัวอย่างการใช้งานฟังก์ชัน Oracle NVL()
ตัวอย่างต่อไปนี้สาธิตการใช้งานพื้นฐานของฟังก์ชัน NVL():
ตัวอย่างที่ 1
พิจารณาตัวอย่างต่อไปนี้:
เลือก เลเวล ( 'สวัสดี' , 'โลก' ) จากคู่;ในตัวอย่างก่อนหน้านี้ เราใช้ฟังก์ชัน NVL() เพื่อทดสอบว่าสตริง 'hello' เป็นค่า NULL หรือไม่ เนื่องจากค่าที่ระบุไม่เป็นโมฆะ ฟังก์ชันจะส่งกลับสตริง 'hello'
ตัวอย่างที่ 2
พิจารณาตัวอย่างที่สองที่แสดงด้านล่าง:
เลือก เลเวล ( โมฆะ, 'โลก' ) จากคู่;ในกรณีนี้ เนื่องจากนิพจน์แรกเป็นค่า NULL เคียวรีจะส่งกลับสตริงที่สองดังที่แสดงด้านล่าง:
ตัวอย่างที่ 3
เรายังสามารถใช้ฟังก์ชัน NVL() เพื่อแทนที่ค่า NULl ในตารางฐานข้อมูล พิจารณาตารางพนักงานที่แสดงด้านล่าง:
เลือก FIRST_NAME, LAST_NAME, EMAIL, เงินเดือน, COMMISSION_PCT จาก EMPLOYEES emp;ตารางผลลัพธ์:
อย่างที่เราเห็น คอลัมน์ commission_pct มีค่า NULl เราสามารถสร้างคิวรีเพื่อแทนที่ค่า NULL จากคอลัมน์ commission_pct ด้วย 0 ดังตัวอย่างด้านล่าง:
เลือก FIRST_NAME, LAST_NAME, EMAIL, เงินเดือน, nvl ( COMMISSION_PCT 0 )จากพนักงาน emp;
ในแบบสอบถามตัวอย่างก่อนหน้านี้ เราใช้ฟังก์ชัน NVL() เพื่อทดสอบค่าในคอลัมน์ commission_pct สำหรับ NULL ถ้ามีค่าเป็น NULL เราจะคืนค่า 0 มิฉะนั้น เราจะคืนค่าเดิม
สิ่งนี้จะช่วยให้เราสามารถแทนที่ค่า NULL ในคอลัมน์ด้วย 0 ดังที่แสดงในตารางผลลัพธ์ด้านล่าง:
เราสามารถใช้สิ่งนี้กับคำสั่ง UPDATE หรือเก็บค่าผลลัพธ์ในมุมมองตาราง
บทสรุป
ในบทช่วยสอนนี้ คุณได้เรียนรู้วิธีใช้ฟังก์ชัน Oracle NVL() เพื่อแทนที่ค่า NULL ด้วยค่าเริ่มต้น โปรดทราบว่าแม้ว่าฟังก์ชัน NVL() จะคล้ายกับฟังก์ชัน COALESCE() อย่างใกล้ชิด แต่ฟังก์ชัน NVL() สามารถคืนค่าได้เพียงค่าเดียวเท่านั้น ในขณะเดียวกัน ฟังก์ชัน coalesce() สามารถคืนค่าได้หลายค่า
หากคุณกำลังมองหาฟังก์ชันที่สามารถรับอาร์กิวเมนต์มากกว่าสองอาร์กิวเมนต์โดยไม่ใช้ฟังก์ชัน coalesce() ให้พิจารณาฟังก์ชัน NVL2()