2011-07-07 12 views
30

मेरी तालिका में मुझे एक कॉलम मिला जिसका मूल्य 0 या 1 है। यदि वह कॉलम 0 है तो मैं मान को 'नो' के रूप में आउटपुट करता हूं; अगर 1 मुझे सभी पंक्तियों के लिए 'हां' के रूप में आउटपुट करना चाहिए। मैं केवल SQL कथन का उपयोग करके ऐसा कैसे कर सकता हूं। धन्यवादएसक्यूएल सर्वर इनलाइन अगर ईएलएसई

उत्तर

51

एसक्यूएल सर्वर एक इनलाइन if बयान नहीं है, लेकिन यह एक इनलाइन case है कि एक ही पूरा करने के लिए इस्तेमाल किया जा सकता है।

मामला है दो रूपों में से एक है:

select 
case MyFlag 
    when 1 then 'YES' 
    when 0 then 'NO' 
    else 'OOPS' 
end 
from MyTable 

जहां यह सिर्फ सी जैसी भाषाओं में एक स्विच और अन्य की तरह इस्तेमाल किया जाता है:

select 
case 
    when MyFlag = 1 then 'YES' 
    when MyFlag = 0 then 'NO' 
    -- when some unrelated condition... 
    else 'OOPS' 
end 
from MyTable 

जहां यह senquentially की एक सूची का मूल्यांकन करता है शर्तों को पूरा करता है और पूरा किया जाता है।

पीएस end भाग अनिवार्य है, और मैं आमतौर पर इसे भूल जाता हूं। यह भी सामान्य है के लिए एक सरल case stament को पूरी तरह से

select (case MyFlag when 1 then 'Yes' else 'No' end) as MyFlagDesc 
7

कुछ इस तरह:

SELECT 
    CASE YourColumn 
     WHEN 0 THEN 'no' 
     WHEN 1 THEN 'yes' 
     ELSE 'nothing' 
    END 
FROM dbo.YourTable 
8

दो संभावनाओं की तरह, inlined जा:

(CASE WHEN condition1 THEN Value1 ELSE Value2 END) 

या, सबसे पूर्ण समाधान:

(CASE value_to_check WHEN Value1 THEN Result1 [WHEN ... THEN ...] ELSE OtherResult END) 
47

मैं समझता हूँ कि यह है कि प्रश्न (जो "एसक्यूएल सर्वर इनलाइन" के लिए Google परिणामों के शीर्ष पर दिखाई देता है) 2 साल पुराना है, लेकिन SQL सर्वर 2012 के साथ, उत्तर कुछ हद तक पुराना है । यह SQL inline if statement type question का डुप्लिकेट प्रतीत होता है, लेकिन वह प्रश्न (यहां तक ​​कि एक पुराना होने वाला), का कोई भी जवाब अद्यतित नहीं है।

एसक्यूएल सर्वर 2012 में आप IIF function उपयोग कर सकते हैं:

IIF (boolean_expression, true_value, false_value) 

उदाहरण:

SELECT IIF(someColumn = 1, 'yes', 'no') 
+1

upvoted, मैं सरल बूलियन स्थितियों के लिए मामला बनाम IIF पसंद करते हैं क्योंकि यह अधिक सुव्यवस्थित – Breakskater

+0

यह अच्छा जवाब है, धन्यवाद है। –

1

मैं एक पंक्ति में तीन IIF मिलाया, मैं तीन चर है और मुझे पता है कि एक है जो चाहते हैं शून्य से अधिक लेकिन मुझे प्राथमिकता का आदेश पता है HomePhoneID, PersonWorkPhoneID और PersonCellPhoneID

IIF(@PersonHomePhoneID > 0 , @PersonHomePhoneID, IIF(@PersonWorkPhoneID > 0 , @PersonWorkPhoneID, IIF(@PersonCellPhoneID > 0 , @PersonCellPhoneID, 0))) 

सवाल का जवाब:

IIF(column = 1 , 'yes', IIF(column = 0, 'no', '')) 
संबंधित मुद्दे