SQL语句相当于三元运算符

时间:2014-12-05 04:50:48

标签: mysql sql select if-statement case

我想在MySQL中创建一个等同于(x - y == 0) ? return 0 : return 100的语句。可能看起来像这样的东西:

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

我想将每行中的属性与某个数字进行比较,如果该数字与行中的数字之差为0,我希望它给我0,否则,我希望它给我100

示例:

my_table上应用此查询(其中10为'与'对比'):

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

会回复:

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

我该怎么做?

3 个答案:

答案 0 :(得分:8)

试试这个:

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

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

答案 1 :(得分:4)

使用case when声明:

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

答案 2 :(得分:2)

尝试使用IF function

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

(我坚持你的条件表达式,但它可以简化一点,因为integer_value - 10 = 0具有与integer_value = 10完全相同的真值。)

请注意,IF 函数与用于存储程序的MySQL IF语句不同。