ການຫຼີ້ນການຂອງ NULL SQL

ກູມງານ ISNULL()、NVL()、IFNULL() ແລະ COALESCE()

ບັນທຶກ "Products" ດັ່ງຕໍ່ມາ:

P_Id ProductName UnitPrice UnitsInStock UnitsOnOrder
1 computer 699 25 15
2 printer 365 36  
3 telephone 280 159 57

ຖ້າ "UnitsOnOrder" ເປັນປະໂຫຍດ ແລະ ສາມາດກວມເອົາຄວາມບໍ່ມີຄວາມຕ້ອງການ NULL.

ພວກເຮົາໃຊ້ຄຳສັ່ງ SELECT ດັ່ງຕໍ່ມາ:

SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder)
FROM Products

ໃນຄຳຂໍ້ທີ່ນີ້, ຖ້າມີ "UnitsOnOrder" ມີຄຸນຄ່າຄວາມລັບຄວາມລຽບນັ້ນ, ຜົນຈະມີຄຸນຄ່າຄວາມລັບຄວາມລຽບ.

ກອງການ ISNULL() ຂອງ Microsoft ຖືກນຳໃຊ້ເພື່ອກໍານົດວິທີການດຳເນີນຂອງຄຸນຄ່າຄວາມລັບຄວາມລຽບ.

ກອງການ NVL(), IFNULL() ແລະ COALESCE() ບັນຈຸສຳລັບຜົນຄືກັບນັ້ນ.

ບ່ອນນີ້, ພວກເຮົາຕ້ອງການໃຫ້ຄຸນຄ່າຈະມີຄືກັບ 0.

ຫນ້າຫນັງ, ຖ້າ "UnitsOnOrder" ມີຄວາມລັບຄວາມລຽບຈະບໍ່ມີຜົນດີສຳລັບການທີ່ລາວສະແດງ, ຖ້າຄຸນຄ່າແມ່ນຄວາມລັບຄວາມລຽບນັ້ນ ISNULL() ຈະກັບຄືກັບ 0.

SQL Server / MS Access

SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))
FROM Products

Oracle

Oracle ບໍ່ມີກອງການ ISNULL(). ແຕ່ພວກເຮົາສາມາດໃຊ້ກອງການ NVL() ເພື່ອຮັບຜົນຄືກັບນັ້ນ:

SELECT ProductName,UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0))
FROM Products

MySQL

MySQL ຍັງມີກອງການຄືກັບ ISNULL(). ແຕ່ວ່າວິທີການດຳເນີນຂອງມັນບໍ່ຄືກັບກອງການ ISNULL() ຂອງ Microsoft.

ໃນ MySQL, ພວກເຮົາສາມາດໃຊ້ກອງການ IFNULL() ຄືກັບນັ້ນ:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

ຫຼືພວກເຮົາສາມາດໃຊ້ກອງການ COALESCE() ຄືກັບນັ້ນ:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products