2010-03-20 19 views
12

मुझे आश्चर्य है कि क्या mysql कमांड चलाने के लिए संभव है यदि एक ही फ़ील्ड पर पहले दिए गए फ़ील्ड खाली हो तो वैकल्पिक फ़ील्ड का चयन कर सकते हैं।MySQL: यदि फ़ील्ड दिया गया है तो वैकल्पिक फ़ील्ड का चयन खाली है

उदाहरण: मेरे पास "पोस्ट" नामक तालिका है जिसमें "परिचय" और "सामग्री" है। उसी कथन में मैं "सामग्री" के परिणामस्वरूप चयन करना चाहूंगा यदि "परिचय" खाली है, लेकिन परिणाम सरणी में दोनों नहीं हैं।

अग्रिम

उत्तर

16

धन्यवाद आप IF फ़ंक्शन का उपयोग कर सकते हैं:

SELECT IF(LENGTH(intro)>0, intro, content) 
FROM posts 

या यदि आप का मतलब है कि खाली NULL

+0

भी आपको धन्यवाद, महान काम भी करता है! – Kyobul

+1

+1: 'केस' एक व्यवहार्य विकल्प होगा, लेकिन 'LENGTH' कीवर्ड अन्य सभी डेटाबेस (ओरेकल, पोस्टग्रेर्स लेकिन SQL सर्वर नहीं - पर' LEN' का उपयोग करना होगा) पर समर्थित नहीं है जो क्वेरी पोर्टेबिलिटी को लगभग म्यूट करता है। –

14

संगठित होना आप के लिए क्या देख रहे है आप NULL के लिए परीक्षण कर सकते हैं।

SELECT COALESCE(intro, content) AS column1 
FROM table 

मान लिया जाये कि परिचय बातिल और नहीं एक शून्य लंबाई स्ट्रिंग है।

+0

धन्यवाद, महान काम करता है! – Kyobul

+1

मैंने आज कुछ सीखा। बहुत बढ़िया जवाब। – Vinny

2

वहां दो संभावित तरीके हैं। जब एक केस स्टेटमेंट के साथ रास्ता है।

Select case when field1 <> '' then field2 else field1 end 

या आप सहवास का उपयोग कर सकते हैं।

select coalesce(field1, field2) 
+0

दो से अधिक हैं। आपके पास IF, IFNULL, केस है, जब मामला fiel1, और मेरे सिर के ऊपर से COALESCE है। और "खाली" स्पष्ट मामले में काम नहीं करेगा जब "खाली" का मतलब शून्य है – dkretz

+0

धन्यवाद, तीसरी विधि, बहुत अच्छा काम करता है! – Kyobul

संबंधित मुद्दे