предложение where с имеет значение null, а не in

#sql #tsql

#sql #tsql

Вопрос:

У меня проблема с предложением where. Я хочу "is null" , чтобы и "<>" функциональность столбца были объединены. Написал что-то вроде этого, но оно удаляет строки with t1.column1= test and is null . Я хочу удалить только тест.

 where (t1.column1 is null 
or t2.column1 is null
or t2.column2 is null)
and t1.column1 <> 'test'
  

Заранее спасибо.

Ответ №1:

Вы могли бы попробовать:

 WHERE  (   t1.column1 != 'test'
       AND (t2.column1 IS NULL OR t2.column2 IS NULL)
       )
    OR t1.column1 IS NULL
  

чтобы получить желаемые результаты.

Ответ №2:

Возможно, вам придется разбить каждое из них:

 where (t1.column1 is null and t1.column1 <> 'test') 
or (t2.column1 is null  and t2.column1 <> 'test')
or (t2.column2 is null  and t2.column2 <> 'test')  
  

Или любые другие критерии, которые вам нужны для каждого условия…

Комментарии:

1. Вы это проверяли? Уверен, что оно всегда будет возвращать false .

2. Вы правы. Ого! У меня могут быть свои and и or в обратном порядке

Ответ №3:

Вы никогда не сможете выполнить это условие
, это всегда будет false

 t1.column1 is null and t1.column1 <> 'test'
  

Если это <> ‘test’, то оно не равно null

Любое сравнение с null возвращает false
Все они вернут false
null = null
null <> null
‘value’ = null
‘value’ <> null

Даже (не (‘value’ = null)) вернет false

Итак, если t1.column1 = null, то у вас есть
true и false = false

Ответ №4:

 Select t1.[Column1], t2.[Column2]
From MyTable t1
INNER JOIN MyTable t2
On t1.userid = t2.userid
where t1.[column1] is null Or t1.[column1] = ''
or t2.[column1] is null Or t2.[column1] = ''
or t2.[column2] is null Or t2.[column2] = ''
and t1.[column1] <> 'test'