SQL Query - как фильтр с нулевым или не равным нулю
Я хочу отфильтровать запись....
Если statusid имеет значение null, отфильтруйте запись (где statusId не равно null)
Если statusid не является нулевым, отфильтруйте запись, в которой statusid равен указанному статусу.
Как мне это сделать?
Ответ 1
Так же, как вы сказали
select * from tbl where statusid is null
или
select * from tbl where statusid is not null
Если ваш statusid не является нулевым, тогда он будет выбран просто отлично, если у вас есть реальное значение, нет необходимости в какой-либо логике "если", если это то, о чем вы думали
select * from tbl where statusid = 123 -- the record(s) returned will not have null statusid
если вы хотите выбрать нулевое значение или значение, попробуйте
select * from tbl where statusid = 123 or statusid is null
Ответ 2
Как насчет statusid = statusid. Null никогда не равен нулю.
Ответ 3
WHERE something IS NULL
и
WHERE something IS NOT NULL
Ответ 4
установить ansi_nulls off
идти
выберите * из таблицы t
внутреннее соединение otherTable o на t.statusid = o.statusid
идти
установить ansi_nulls на
идти
Ответ 5
Я думаю, это может сработать:
select * from tbl where statusid = isnull(@statusid,statusid)
Ответ 6
Где бы вы ни пытались проверить значение NULL для столбца, вы должны использовать IS NULL и НЕ ЯВЛЯЕТСЯ
Вы не должны использовать = NULL или == NULL
Пример (NULL)
select * from user_registration where registered_time IS NULL
вернет строки с registered_time значением NULL
Пример (NOT NULL)
select * from user_registration where registered_time IS NOT NULL
вернет строки с registered_time значением NOT NULL
Примечание. Ключевое слово NULL, NOT NULL и is: not case sensitive.