Можно ли сделать оператор выбора, который принимает только значения NOT NULL?
Прямо сейчас я использую это:
SELECT * FROM table
И тогда я должен отфильтровать нулевые значения с помощью цикла php.
Есть ли способ сделать:
SELECT * (that are NOT NULL) FROM table
?
Прямо сейчас, когда я выбираю *, я получаю val1, val2, val3, null, val4, val5, null, null и т. Д. .... но я просто хочу получить значения, которые не равны null в моем результате. Возможно ли это без фильтрации с помощью петли?
Ответы:
Вы должны использовать
IS NOT NULL
. (Операторы сравнения=
и<>
оба даютUNKNOWN
сNULL
каждой стороны выражения.)Просто для полноты я упомяну, что в MySQL вы также можете отменить оператор нулевого безопасного равенства, но это не стандартный SQL.
Отредактировано, чтобы отразить комментарии. Похоже, что ваша таблица может быть не в первой нормальной форме, и в этом случае изменение структуры может облегчить вашу задачу. Несколько других способов сделать это, хотя ...
Недостаток вышесказанного заключается в том, что он сканирует таблицу несколько раз по одному столбцу. Это может быть предотвращено ниже, но я не проверял это в MySQL.
источник
CASE
оператор, а неCASE
функцию. Так не должно ли быть,END CASE
а неEND
вSELECT CASE ...
части?idx
рум первымSELECT
пришел изidx
в секундуSELECT
? ЧегоCASE
пытается достичь это утверждение? Что наSELECT
самом деле делает второй ? И вы делаете внутреннее соединение, а не перекрестное соединение, верно?SELECT * FROM table WHERE * IS NOT NULL AND primary_key="somevalue"
)Вы можете отфильтровать строки, содержащие значение NULL в определенном столбце:
Если вы хотите отфильтровать строки, содержащие ноль в любом столбце, попробуйте это:
Обновление: на основе ваших комментариев, возможно, вы хотите это?
И я согласен с Мартином, что если вам нужно сделать это, то вам, вероятно, следует изменить дизайн базы данных.
источник
*
возвращает? Возможно, приведите несколько примеров данных в вашем вопросе, так как из вашего комментария выше не ясно, все ли это один столбец.Единственным недостатком этого подхода является то, что вы можете сравнивать только 5 столбцов, после чего результат всегда будет ложным, поэтому я сравниваю только те поля, которые могут быть
NULL
.источник
Я нашел это решение:
Этот запрос выбирает последнее не нулевое значение для каждого столбца.
пример
Если у вас есть стол:
ты получаешь:
запрос
Я надеюсь помочь вам.
источник
Я использую
\!
команду в MySQL для извлечения значений NULL из оболочки:Лучше всего работает с правильным,
.my.cnf
где указана ваша база данных / имя пользователя / пароль. Таким образом , вы просто должны окружитьselect
с\! mysql e
и| grep -v NULL
.источник
Следующий запрос работает на меня
когда я установил значение по умолчанию для столбца NULL, то
и когда я установил значение по умолчанию ничего тогда
источник
Да, используйте
NOT NULL
в своем запросе, как это ниже.источник
MYSQL НЕ НУЛЯЕТСЯ С СОЕДИНЕНИЯМИ И ВЫБОРОМ, ВСТАВЛЯЙТЕ В, УДАЛЯЙТЕ И ЛОГИЧЕСКИЙ ОПЕРАТОР, КАК ИЛИ НЕ
источник
источник