เอกสารของ Oracle แจ้งเตือนนักพัฒนาถึงปัญหานี้อย่างน้อยที่สุดกลับไปเป็นเวอร์ชัน 7
Oracle เลือกที่จะเป็นตัวแทนของ NULLS ด้วยเทคนิค "ค่าที่เป็นไปไม่ได้" ตัวอย่างเช่นค่า NULL ในตำแหน่งตัวเลขจะถูกเก็บเป็น "ลบศูนย์" ซึ่งเป็นค่าที่เป็นไปไม่ได้ ศูนย์ลบใด ๆ ที่เป็นผลมาจากการคำนวณจะถูกแปลงเป็นศูนย์บวกก่อนที่จะถูกเก็บไว้
นอกจากนี้ Oracle ยังเลือกอย่างผิดพลาดเพื่อพิจารณาสตริง VARCHAR ที่มีความยาวเป็นศูนย์ (สตริงว่าง) เป็นค่าที่เป็นไปไม่ได้และเป็นตัวเลือกที่เหมาะสมสำหรับการแทนค่า NULL ปรากฎว่าสตริงว่างอยู่ไกลจากค่าที่เป็นไปไม่ได้ แม้แต่ตัวตนภายใต้การทำงานของการต่อสตริง!
เอกสารของ Oracle เตือนนักออกแบบฐานข้อมูลและนักพัฒนาว่า Oracle เวอร์ชันในอนาคตบางรุ่นอาจแบ่งการเชื่อมโยงนี้ระหว่างสตริงว่างและ NULL และทำลายรหัสใด ๆ ที่ขึ้นอยู่กับความสัมพันธ์นั้น
มีเทคนิคในการตั้งค่าสถานะ NULLS นอกเหนือจากค่าที่เป็นไปไม่ได้ แต่ Oracle ไม่ได้ใช้
(ฉันใช้คำว่า "ตำแหน่ง" ด้านบนเพื่อหมายถึงจุดตัดของแถวและคอลัมน์)