2013-04-22 31 views
6

बदलें यह एक साधारण सवाल की तरह लगता है, लेकिन मुझे कोई जवाब नहीं मिला है। मैं मूल रूप से यह करने के लिए कोशिश कर रहा हूँ:एसक्यूएल चयन अगर (ए = "") फिर बी मान

SELECT * FROM table1 
IF(columnA > 0) BEGIN 
columnB = 'Greater than 0' 
END 

मैं मूल्य तालिका में परिवर्तित करने के लिए नहीं करना चाहते हैं, मैं सिर्फ यह परिणाम में बदलना चाहते हैं। कोई सुझाव?

+0

एक [मामला] का उपयोग करें (http://msdn.microsoft.com/en-gb/library/ms181765.aspx) अभिव्यक्ति – Aprillion

उत्तर

22
SELECT ColumnA 
     , case when ColumnA > 0 then 'Greater than 0' else ColumnB END AS ColumnB 
FROM table1; 
+1

अभ्यस्त यह सिर्फ बदल Columna कॉलम बी के बजाय 0 से 'ग्रेटर से 0' तक? –

+1

टायलर, यह केस स्टेटमेंट की स्थिति के रूप में केवल * जांच * कॉलम ए है। दूसरा कॉलम या तो "0 से बड़ा" या कॉलमब का तालिका मान है। कोशिश करो। –

+0

बिल्कुल सही !! धन्यवाद! –

6

यह काम करना चाहिए:

SELECT columnA, IIF(columnA > 0, 'Greater than 0', columnB) 
    FROM table1; 
+0

मुझे नहीं लगता कि "आईएफ" एक ऐसा फ़ंक्शन है जो 3 पैरामीटर लेता है। –

+0

मुझे अभी सूचित किया गया था कि एक "आईआईएफ" समारोह है। मैं मानता हूं कि तुम्हारा क्या मतलब है, फिर सिर में खुद को थप्पड़ मारो। कृपया संपादित करें ताकि मैं ऊपर उठा सकूं! –

+0

@NickVaccaro - दस्तावेज़ देखें [यहां] (http://dev.mysql.com/doc/refman/5.5/en/control-flow-functions.html#function_if) –

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