我有一个存储过程,我需要过滤具有二进制值的行,并且只返回二进制列中不为空的行。
执行此存储过程时:
create procedure sp_GetGraduatingStudentDataByYear
(
@year nvarchar(4)
)
as
select * from Cohort_Graduation_Student_Data where Exp_Grad_Year = @year and Off_Track != null
go
我没有结果。
如何更改此脚本以返回二进制列中具有空值的行?
答案 0 :(得分:4)
这不是因为它是二进制列,而是因为SQL中的null
不应该与任何东西进行比较。基本上,Off_Track != null
条件会过滤掉所有行 - column = null
和column != null
的所有检查始终都会评估为false
。
改为使用is not null
:
select *
from Cohort_Graduation_Student_Data
where Exp_Grad_Year = @year and Off_Track is not null