Как ничего не вернуть в IF условии MySQL? - PullRequest
0 голосов
/ 02 октября 2018

В MySQL я использую оператор IF для возврата «ДА», если условие действительно, и «НЕТ», если оно недействительно.

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

Я хочу ничего не возвращать, если условия не действительны.Как я могу это сделать?Я пытался использовать NULL, но он просто возвращает NULL

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

Как получить пустую строку?

Ответы [ 4 ]

0 голосов
/ 02 октября 2018

Если вам не нужна строка, просто напишите:

select 'Yes'
from dual
where 1500 < 1000
0 голосов
/ 02 октября 2018

Вы всегда можете обернуть его условием проверки переменной, которая определяет, следует ли возвращать ничего.

select * from (select 3 > 4 as result) as result
where result > 0;
0 голосов
/ 02 октября 2018

Попробуйте использовать оператор HAVING() в MySQL:

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

WHERE - это, конечно, первое, что я бы попробовал, но так как это кажется доказательством принципа, а не реальным запросом выбора,HAVING() более полезен для групповых функций, если вы их используете (например, COUNT()).

0 голосов
/ 02 октября 2018

Просто верните пустую строку

/* 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 хочет ничего не будет возвращено .Мы можем проверить, чтобы то же условие IF в предложении WHERE было не пустым .Попробуйте следующее:

/* Returns nothing if condition dont match */
SELECT IF(1500<1000, 'YES', '')  
FROM test_table 
WHERE IF(1500<1000, 'YES', '') <> '';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...