相当于三元运算符的 SQL 语句
Posted
技术标签:
【中文标题】相当于三元运算符的 SQL 语句【英文标题】:SQL statement equivalent to ternary operator 【发布时间】:2015-02-03 05:11:53 【问题描述】:我想在 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
我该怎么做?
【问题讨论】:
为什么不用case语句 【参考方案1】:使用case when
声明:
select *, (case when integer_val = 10 then 100 else 0 end) as New_Val
from yourtable
【讨论】:
【参考方案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
语句。
【讨论】:
【参考方案3】:试试这个:
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;
【讨论】:
以上是关于相当于三元运算符的 SQL 语句的主要内容,如果未能解决你的问题,请参考以下文章