MySQL

2011-12-14 5 views
48

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

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

यह MySQL में संभव है?

+0

संभव डुप्लिकेट http://stackoverflow.com/questions/1647961/how-do-you-write-a-conditional-in- a-mysql-select-statement) –

उत्तर

94

इस प्रयास करें:

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

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

इसे कहते हैं:

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` 
+1

+1, लेकिन प्रश्न का उत्तर देने के लिए: 'केस जब आईडी नल है तो 0 ELSE आईडी END' –

+0

@ माइकल क्रेलिन-हैकर: वही बात, नहीं? और 'इफ्नुल' terser है। –

+0

@ माइकल क्रेलिन-हैकर: ओह, मुझे यह मिल गया। –

14

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

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

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

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

IFNULL(ID, 0) 
COALESCE(ID, 0) 
की [आप कैसे एक MySQL का चयन करें बयान में एक सशर्त लिख सकता हूँ?] (