NULLIF()<है /कोड>
समारोह:
SELECT NULLIF(var, '');
अगर var
$2 में मान रखता है, आपको NULL
मिलता है इसके बजाय।
उदाहरण में मैं खाली स्ट्रिंग को प्रतिस्थापित करता हूं:''
NULL
. के साथ ।
पूर्णांक प्रकार के लिए कोई खाली स्ट्रिंग नहीं है . बस संभव नहीं है। चूंकि NULLIF()
डेटा प्रकार को स्विच नहीं कर सकता, आपको PHP में अपने इनपुट को स्वच्छ करना होगा।
यदि आपने कॉलम डिफ़ॉल्ट को परिभाषित नहीं किया है, तो आप बस कॉलम को छोड़ दें . भी कर सकते हैं INSERT
. में कमांड और यह NULL
. से भर जाएगा (जो कि डिफ़ॉल्ट DEFAULT
है )।
जांचें कि PHP में पैरामीटर खाली है या नहीं और कॉलम को INSERT
. में शामिल न करें आदेश अगर यह है।
या PHP शाब्दिक NULL . का उपयोग करें इसके बजाय जैसे क्वास्नोई यहां प्रदर्शित करता है ।
बाकी केवल स्ट्रिंग प्रकारों के लिए समझ में आता है
पूरी तरह सुनिश्चित करने के लिए , कोई भी खाली स्ट्रिंग दर्ज नहीं कर सकता CHECK
. जोड़ें तालिका के लिए बाधा:
ALTER TABLE tr_view
ADD CONSTRAINT tr_view_age_not_empty CHECK (age <> '');
अपवादों से बचने के लिए इसके कारण, आप एक ट्रिगर जोड़ सकते हैं जो स्वचालित रूप से इनपुट को ठीक करता है:
CREATE OR REPLACE FUNCTION trg_tr_view_avoid_empty()
RETURNS trigger AS
$func$
BEGIN
IF NEW.age = '' THEN
NEW.age := NULL;
END IF;
IF NEW.month = '' THEN
NEW.month := NULL;
END IF;
RETURN NEW;
END
$func$ LANGUAGE plpgsql
CREATE TRIGGER tr_view_avoid_empty
BEFORE INSERT OR UPDATE ON tr_view
FOR EACH ROW
WHEN (NEW.age = '' OR NEW.month = '')
EXECUTE PROCEDURE trg_tr_view_avoid_empty();