2013-12-25 2 views
1

Учитывая два пользователя,SQL значение столбца пустые, фильтр поиск ошибается

NAME | JOB  | CITY 
John | null | Washington D.C. 
Sandy | gardener| Nashville 

Если мой SQL запрос гласит:

"SELECT * FROM users WHERE job != 'gardener'", 

мои результаты 0,

, где я хотел бы, чтобы они be 1:

John | null | Washington D.C. 

Это гораздо более простой пример более крупного запроса, который я пытаюсь сделать. Если я по умолчанию задал значение «0», я получаю правильные результаты, но я предпочел бы иметь нуль, ради остальной части приложения.

ОБНОВЛЕНИЕ: Спасибо за все предложения, но я столкнулся с другой проблемой.

Допустим, мой SQL запрос:

"SELECT * FROM users WHERE city != Washington D.C. and job != 'gardener' OR job IS NULL" 

К сожалению, это возвращает Джон, в то время как я не хочу Джона, потому что он живет в Вашингтоне, округ Колумбия, я хочу вернуть 0 строк в этом случае.

+1

Там нет колонка называется садовник!?!?!? – Strawberry

+0

@Strawberry, хорошо поймать! –

+0

Проницательное использование круглых скобок поможет исправить это. – Strawberry

ответ

2
SELECT name,job,city 
FROM users 
WHERE IFNULL(job,'') != 'gardener'; 

если вы хотите использовать OR job IS NULL в вашем обновленном запросе, как уже упоминалось клубника, вы должны поставить скобки вокруг условий работы, как показано ниже

SELECT * FROM users WHERE city != 'Washington D.C.' and (job != 'gardener' OR job IS NULL) 
+0

Это прекрасно, потому что он заботится о том, чтобы строка с нулевым значением также не удовлетворяла другому условию WHERE, эта строка не возвращается – compguy24

+0

вы все еще можете использовать ваш обновленный запрос и заставить его работать с круглыми скобками вокруг условий проверки вашей работы. См. Нижнюю часть моего ответа. –

1
SELECT * FROM users WHERE job != 'gardener' OR job IS NULL 
+0

Спасибо, но как это сделать, я избавлюсь от строки с нулевым значением, которая также нарушает какое-то другое условие предложения where? См. Мое обновление – compguy24

+0

кажется, что ответ Тин Тран позаботится об этом – compguy24

0

NULL означает отсутствие данных, так что технически SQL не «знает», если поле, где значение NULL! = 'садовник', поэтому вам нужно проверить IS NULL, как указано выше.

Смежные вопросы