IF और LENGTH से खाली/NULL मान हैंडल करना
जब किसी कॉलम में खाली स्ट्रिंग ('') या NULL हो और उसकी जगह दूसरे कॉलम का मान दिखाना हो, तो IF() और LENGTH() का उपयोग करें।
टेबल बनाना और डेटा इन्सर्ट करना
CREATE TABLE DemoTable839(
StudentFirstName VARCHAR(100),
StudentLastName VARCHAR(100)
);
INSERT INTO DemoTable839 VALUES('Chris', 'Brown');
INSERT INTO DemoTable839 VALUES('', 'Taylor'); -- खाली स्ट्रिंग
INSERT INTO DemoTable839 VALUES(NULL, 'Taylor'); -- NULL
INSERT INTO DemoTable839 VALUES('Adam', 'Smith');
मौजूदा डेटा
+------------------+-----------------+ | StudentFirstName | StudentLastName | +------------------+-----------------+ | Chris | Brown | | | Taylor | | NULL | Taylor | | Adam | Smith | +------------------+-----------------+
क्वेरी: खाली/NULL को लास्ट नेम से बदलना
SELECT IF(LENGTH(StudentFirstName), StudentFirstName, StudentLastName) FROM DemoTable839;
आउटपुट
+---------------------------------------------------------------+ | if(length(StudentFirstName),StudentFirstName,StudentLastName) | +---------------------------------------------------------------+ | Chris | | Taylor | | Taylor | | Adam | +---------------------------------------------------------------+
कैसे काम करता है
LENGTH('')= 0 लौटाता है (फाल्सी मान)LENGTH(NULL)= NULL लौटाता है (फाल्सी मान)LENGTH('Chris')= 5 लौटाता है (ट्रुथी मान)IF(condition, true_val, false_val)शर्त के अनुसार मान चुनता है
बेहतर विकल्प: COALESCE और NULLIF
-- खाली स्ट्रिंग को NULL में बदलकर COALESCE उपयोग करें SELECT COALESCE(NULLIF(TRIM(StudentFirstName), ''), StudentLastName) FROM DemoTable839;
यह तरीका अधिक मजबूत है क्योंकि:
TRIM()व्हाइटस्पेस हटाता हैNULLIF('', '')खाली स्ट्रिंग को NULL बनाता हैCOALESCE()पहला नॉन-NULL मान लौटाता है
IFNULL का उपयोग (सिर्फ NULL के लिए)
SELECT IFNULL(StudentFirstName, StudentLastName) FROM DemoTable839;
नोट: यह खाली स्ट्रिंग ('') को नहीं पकड़ता, केवल NULL को।