2013-11-19 4 views
1

Я пытаюсь запросить две разные вещи:SQL Синтаксис NOT NULL клетки

1) клетки с пустым значением

WHERE (user_id = '$userId' AND sub_id = '')

2) клеток со значением

WHERE (user_id = '$userId' AND sub_id IS NOT NULL)

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

Есть ли другой способ? База данных

выглядит примерно так:

user_id --- sub_id 

---1---45--- 

---4--- --- 

---78---34--- 

я могу назвать 4 пользователя по информации, но не вызывать пользователя 1 или пользователя 78, которые имеют значения в sub_id

+0

Я считаю, что есть пробелы в этом столбце, вы должны проверить, что – Satya

+0

@Satya, которые могли бы объяснить, почему 'является null' не будет извлекать 4, но я не уверен, как это объясняет, почему 'is not null' не извлекает 1 или 78. – paxdiablo

+0

@paxdiablo. он говорит ранее, что второй запрос возвращает все строки. Я считаю, что он говорит о первом запросе в конце, говоря, что он может получить пользователя 4, но не остальные. –

ответ

1

Если ваш первый запрос возвращает user_id = 4, это означает, что строка имеет sub_id = "". Если вы не хотите, чтобы в вашем втором запросе попытаться изменить его на:

WHERE user_id = '$userId' AND sub_id IS NOT NULL AND sub_id != ""

+0

Спасибо, это похоже на работу. Теоретически могу ли я просто удалить предложение IS NOT NULL из второго запроса? –

+0

Если вы ожидаете, что у вас есть нулевые значения у вас есть "", то это будет работать без IS NOT NULL. –

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