MySQL में ternary सशर्त ऑपरेटर कैसे लागू करें


89

मैं MySQL में ternary सशर्त ऑपरेटर को लागू करना चाहता हूं। मेरे पास एक टेबल है जिसमें एक फील्ड आईडी मौजूद है। इसका मान शून्य हो सकता है। मैं idइस तरह टर्नरी सशर्त प्रारूप में प्रदर्शित करना चाहता हूं :

select id = id == null ? 0 : id;

क्या यह MySQL में संभव है?


जवाबों:


149

इसे इस्तेमाल करे :

select if(Id is null, 0, id) as Id;

1
यह शर्म की बात है कोई आशुलिपि नहीं है। यदि आप केवल पहला मूल्य प्राप्त करना चाहते हैं जो सच के बराबर है, तो आपको nullया ''शायद के लिए भी जांच करनी होगी 0। mySQL कभी
कभार

53

प्रलेखन आपका मित्र है; आपको इसे पढ़ना चाहिए!

इसे कहते हैं:

IFNULL(expr1,expr2)

अगर expr1नहीं है NULL, तो IFNULL()रिटर्न expr1; अन्यथा यह वापस आ जाता है expr2

और फिर बहुत सारे उदाहरण। यह NULLदूसरे ऑपरेंड के रूप में और तुलनात्मक विषय के साथ एक टर्नरी सशर्त का उपयोग करने के बराबर है ; यह प्रतीकों का उपयोग करने ?और :आपको प्राप्त करने के लिए नहीं होता है, वास्तव में किसी भी चीज के लिए प्रासंगिक नहीं है।

तो, आपके मामले में:

SELECT IFNULL(`id`, 0) FROM `table`

यदि आप तीन ऑपरेंड स्पष्ट रूप से प्रदान करने के लिए बेताब हैं (क्यों ?!), तो IFनिम्न पर स्विच करें :

SELECT IF(`id` IS NULL, 0, `id`) FROM `table`

4
+1, लेकिन इस प्रश्न का उत्तर देने के लिए:CASE WHEN id IS NULL THEN 0 ELSE id END
माइकल क्रेलिन - हैकर

@ माइकलक्रेलिन-हैकर: एक ही बात, नहीं? और IFNULLनिडर है।
को ऑर्बिट में लाइटनेस दौड़

@ माइकलक्रेलिन-हैकर: ओह, मैं समझ गया।
ऑर्बिट

निश्चित रूप से, केवल त्रिगुट के बारे में सवाल का जवाब देने के लिए :)
माइकल क्रेलिन - हैकर

मेरे मामले में, मुझे IFइसके बजाय IFNULLया इसका उपयोग करने की आवश्यकता है COALESCEक्योंकि मैं एक अलग विक्रेता डेटाबेस में डेटा स्थानांतरित कर रहा हूं और गैर-शून्य मानों को आयात नहीं करना चाहता, केवल इसे सामान्य स्थिति के रूप में व्याख्या करता हूं। SELECT IF(a.cancellationReason IS NOT NULL, 'C', 'A')) as appointment_statusमेरे लिये कार्य करता है।
एडम एलसोडेनी

22

वहाँ दो तरीके हैं कि आप एक ही तर्क को टर्नरी ऑपरेटर के रूप में लागू कर सकते हैं:

  1. उपयोग IFफ़ंक्शन का , जैसे;IF(expression, true result, false result)
  2. CASEअभिव्यक्ति का उपयोग करें , उदाहरण के लिए।

    CASE WHEN expression THEN <true result> ELSE <false_result> END
    

जब आप NULL के लिए जाँच कर रहे हैं तो आप IFNULLया COALESCEफ़ंक्शंस का उपयोग कर सकते हैं , जैसे।

IFNULL(ID, 0)
COALESCE(ID, 0)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.