2013-04-22 23 views
6

olarak değiştirin. Bu basit bir soru gibi görünüyor, ancak bir yanıt bulamadım. Temelde bunun için çalışıyorum:SQL SELECT (a = "") Daha sonra b değerini

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

ben değer tablosunda değiştirmek istemiyorum, ben sadece sonucu değiştirmek istiyorum. Baska öneri?

+0

bir [vaka] kullanın (http://msdn.microsoft.com/en-gb/library/ms181765.aspx) ifadesi – Aprillion

cevap

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

alışkanlık bu sadece değiştirmek kolumna 0'dan '0'dan büyük' ​​yerine B sütununa mı? –

+1

Tyler, yalnızca durum bildirimi için koşul olarak * kontrol ediliyor. İkinci sütun ya "0'dan büyük" ya da sütun B'nin tablo değeridir. Dene. –

+0

Mükemmel! Teşekkür ederim! –

6

Bu çalışması gerekir:

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

"IF", 3 parametre alan bir işlev olduğunu düşünmüyorum. –

+0

Sadece bir "IIF" fonksiyonu olduğunu öğrendim. Demek istediğin buydu, sonra kafamı tokatla. Lütfen düzenleyebileceğim şekilde düzenleyin! –

+0

@NickVaccaro - Dokümanlara bakın [burada] (http://dev.mysql.com/doc/refman/5.5/en/control-flow-functions.html#function_if) –

İlgili konular