2015-11-06 7 views
-3

У меня есть SQL-запрос, который mr.Name может быть nulll, так что если это null, я не хочу его рассматривать. как я могу написать этот запрос, если он содержит данные, рассмотреть его в where, если не ведут себя какsql query, если условие

where da.LastRefreshTime >= xx and da.LastRefreshTime <= xx and 
     da.M = z 

Это мой SQL запрос:

SELECT distinct ... 
FROM ... 
where da.LastRefreshTime >= xx and da.LastRefreshTime <= xx and 
    da.M = z and mr.Name in ('FRANCE','ITALY') 
+1

MySQL, SQL Server или C#? Выберите один, пожалуйста. Подсказка: это не C# ... – DavidG

+0

Это имеет значение? @DavidG 'where column is not null' работает для обоих (но не в mySql) – CM2K

+0

@ CM2K Да, это имеет значение. – DavidG

ответ

0
SELECT distinct ... 
FROM ... 
where da.LastRefreshTime >= xx and da.LastRefreshTime <= xx and 
    da.M = z and ((mr.Name in ('FRANCE','ITALY') and mr.Name is not NULL) or 1 = 1) 

Я думаю, что это то, что вы хотите, попробуйте и скажите мне, если это решит вашу проблему

+0

Но если он равен нулю, он не учитывает всю деталь. Я хочу, как я объяснил, просто для того, чтобы рассмотреть «где da.LastRefreshTime> = xx и da.LastRefreshTime <= xx и da.M = z ', если mr.Name равно null, это похоже на отсутствие фильтра для mr.Name – lol

+0

Я получаю то, что вы хотите. Подождите несколько минут, чтобы записать его. – CM2K

+0

см. Мой обновленный ответ @lol – CM2K

1

использование IS NOT NULL

WHERE mr.Name IS NOT NULL; 

IS NOT NULL условие используется для проверки на NOT NULL значение в SELECT, INSERT, UPDATE или DELETE

+0

'where column is not null' также является допустимым синтаксисом SQL-сервера. – CM2K

0

Вы, кажется, хотите возвращать строки, где Имя является Франция, Италия или NULL , Таким образом, просто добавьте предложение OR и скобки: -

SELECT DISTINCT ... 
FROM ... 
WHERE da.LastRefreshTime >= xx 
AND da.LastRefreshTime <= xx 
AND da.M = z 
AND (mr.Name IN ('FRANCE','ITALY') 
OR mr.Name IS NULL) 
+0

no Я хочу игнорировать фильтр mr.Name в where where, если mr.Name равно null. в случае, если mr.Name равно null Я хочу, чтобы запрос игнорировал его так: где da.LastRefreshTime> = xx и da.LastRefreshTime <= xx и da.M = z – lol

+0

Простите, боюсь, я не вижу разницы. Этот запрос возвращает строки, в которых строка фильтруется для Франции или Италии, но если имя равно null, оно также возвращается (если оно соответствует другим предложениям WHERE). – Kickstart

+0

@Kickstart, пожалуйста, см. Мой ответ. Я думаю, он хотел удалить 'mr.Name IN ('FRANCE', 'ITALY')', если 'mr.Name is null '. Правильно ли я понял? – CM2K