在MySQL的IF条件下如何不返回任何内容?

时间:2018-10-02 17:09:01

标签: mysql sql

在MySQL中,如果条件有效,我将使用IF运算符返回“ YES”,如果条件无效则返回“ NO”

SELECT IF(500<1000, "YES", "NO"); //RETURNS YES

如果条件无效,我什么也不愿返回。我怎样才能做到这一点? 我尝试使用NULL,但它只会返回NULL

SELECT IF(1500<1000, "YES",NULL); //RETURNS NULL

如何获得空白行?

4 个答案:

答案 0 :(得分:3)

只需返回一个空字符串

/* Returns YES because condition is true */
SELECT IF(500<1000, 'YES', '');


/* Returns blank (empty string) because condition is false */
SELECT IF(1500<1000, 'YES', '');

编辑:显然,OP希望使用nothing to be returned。我们可以在IF子句中检查相同的WHERE条件是否为不为空。请尝试以下操作:

/* Returns nothing if condition dont match */
SELECT IF(1500<1000, 'YES', '')  
FROM test_table 
WHERE IF(1500<1000, 'YES', '') <> '';

答案 1 :(得分:0)

您总是可以用检查变量的条件来包装它,以确定是否不应返回任何内容。

select * from (select 3 > 4 as result) as result
where result > 0;

答案 2 :(得分:0)

尝试在MySQL中使用HAVING()运算符:

SELECT *
FROM (
    SELECT IF(500<1000, "YES", "NO")
)
subq HAVING (500<1000);

WHERE当然是我会尝试的第一件事,但是由于这似乎是原则的证明,而不是真正的选择查询,因此,HAVING()对于组函数更有用,如果您使用的是一个(例如COUNT())。

答案 3 :(得分:0)

如果您根本不需要任何行,则只需写:

select 'Yes'
from dual
where 1500 < 1000