2014-12-05 15 views
7

Ich möchte eine Anweisung erstellen, die (x - y == 0) ? return 0 : return 100 in MySQL entspricht. Etwas, das könnte wie folgt aussehen:SQL-Anweisung entspricht ternären Operator

SELECT id, [(integer_val - 10 == 0) ? 0 : 100] AS new_val FROM my_table 

Ich mag ein Attribut in jeder Zeile auf eine bestimmte Anzahl vergleichen, und wenn die Differenz zwischen dieser Zahl und der Zahl in der Zeile 0 ist, ich will es mir geben 0, sonst, ich will es mir geben 100.

Beispiel:

diese Abfrage my_table Anwendung (mit 10 die 'im Vergleich zu' wird Nummer):

id | integer_val 
=================== 
1 10 
2 10 
3 3 
4 9 

Zurückgeben würde:

id | new_val 
=================== 
1 100 
2 100 
3 0 
4 0 

Wie kann ich das tun?

+0

warum nicht Sie case-Anweisungen verwenden – Exhausted

Antwort

5

Versuchen Sie folgendes:

SELECT id, IF(integer_val = 10, 100, 0) AS new_val 
FROM my_table; 

ODER

SELECT id, (CASE WHEN integer_val = 10 THEN 100 ELSE 0 END) AS new_val 
FROM my_table; 
4

Verwenden case when Anweisung:

select *, (case when integer_val = 10 then 100 else 0 end) as New_Val 
from yourtable 
2

Versuchen Sie, die mit IF function:

SELECT id, IF(integer_val - 10 = 0, 0, 100) AS new_val FROM my_table 

(ich mit Ihrem Zustand Ausdruck stecken, aber es kann ein wenig vereinfacht werden, da integer_value - 10 = 0 genau den gleichen Wahrheitswert hat als integer_value = 10.)

Beachten Sie, dass die IFFunktion unterscheidet sich von MySQL IF Anweisung für gespeicherte Programme verwendet.

Verwandte Themen