Запрос не работает, когда я нацеливаюсь на другой столбец с точно таким же - PullRequest
0 голосов
/ 30 марта 2019

Известный рабочий запрос не выполняется, когда я нацеливаюсь на другой столбец (те же типы данных). Этот запрос работает:

Select * from assets WHERE type = '' AND os LIKE '%7%' AND status <> 'Discarded'

НО этот запрос не работает (он возвращает пустой набор):

Select * from assets WHERE model = '' AND os LIKE '%7%' AND status <> 'Discarded'

ЕДИНСТВЕННАЯ разница заключается в том, что столбец type изменен на model. Оба столбца varchar, и есть записи, которые удовлетворяют обоим условиям запроса. Я попытался поместить `` вокруг имен полей, это не помогло.

1 Ответ

1 голос
/ 30 марта 2019

Из комментариев: выражение AND status <> 'Discarded' не допускает NULL значений.

В SQL NULL <> 'Discarded' равно false, точно так же, как NULL = 'Discarded' также равно false. Чтобы проверить на ничтожность, вам нужно использовать IS NULL.

Я думаю, что ваш запрос должен быть выражен как:

SELECT * 
FROM assets 
WHERE 
    model = '' 
    AND os LIKE '%7%' 
    AND (status IS NULL OR status <> 'Discarded')

NB. Стоит отметить, что хранение пустых строк, вообще говоря, не очень хорошая идея. Обычно проще использовать NULL в качестве значения по умолчанию.

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