बिल्कुल। NULL किसी अज्ञात मान का प्रतिनिधित्व करता है, किसी विशिष्ट मान का नहीं (यह NULL . जैसा नहीं है) सी में, या NULL रूबी में, आदि) SQL में, यदि आप किसी चीज़ की तुलना अज्ञात मान से करते हैं, तो परिणाम भी अज्ञात होता है। और आपको वे पंक्तियाँ नहीं मिलेंगी जहाँ WHERE स्थिति अज्ञात है।
इसे आजमाएं:
SELECT NULL <> 2;
और आप देखेंगे NULL परिणाम के रूप में।
इसे आजमाएं:
SELECT * FROM t WHERE NULL;
और कोई पंक्ति नहीं निकलेगी, भले ही तालिका t बहुत बड़ा है।
अगर आपको वास्तव में वह चाहिए जो आपने कहा था (और मैं इसकी वकालत नहीं कर रहा हूं), तो आप ऐसा कुछ कर सकते हैं:
SELECT T.f1, T.f2
FROM (SELECT NULL f1, 'a' f2) T
WHERE ((T.f1 IS NULL OR T.f2 IS NULL)
AND (T.f1 IS NOT NULL OR T.f2 IS NOT NULL))
OR T.f1 <> T.f2