2013-04-22 9 views
6

Das ist wie eine einfache Frage scheint ändern, aber ich habe nicht in der Lage gewesen, eine Antwort zu finden. Ich versuche, im Grunde, dies zu tun:SQL SELECT Wenn (a = „“) dann b-Wert

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

Ich will nicht der Wert in der Tabelle ändern, ich will nur mich im Ergebnis ändern. Irgendwelche Vorschläge?

+0

einen [Fall] verwenden (http://msdn.microsoft.com/en-gb/library/ms181765.aspx) Ausdruck – Aprillion

Antwort

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

Wont dies nur columnA ändern von 0 bis 'Größer als 0' anstatt SpalteB? –

+1

Tyler, es überprüft nur * columnA als Bedingung für die case-Anweisung. Die zweite Spalte ist entweder "Größer als 0" oder der Tabellenwert von ColumnB. Versuch es. –

+0

Perfekt !! Vielen Dank! –

6

Diese Arbeit sollte:

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

Ich glaube nicht, dass "IF" eine Funktion ist, die 3 Parameter benötigt. –

+0

Ich wurde gerade informiert, dass es eine "IIF" -Funktion gibt. Ich nehme an, dass du das meintest, und dann schlag mir in den Kopf. Bitte editieren, damit ich upvote! –

+0

@NickVaccaro - Siehe die Dokumentation [hier] (http://dev.mysql.com/doc/refman/5.5/en/control-flow-functions.html#function_if) –