ฟังก์ชัน Oracle NVL

Fangkchan Oracle Nvl



ค่า 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()