select * from table1 where [a]=? and [b] is null
执行该语句时,不返回任何记录。如果我更改" [b]为null"部分到" [b] =?"并将null值传递给参数,结果相同:没有记录。但是,如果我传递一个非空值,那么它工作正常。我必须显示b字段为空的记录。
另外,我在这个网站的某处读到null并不匹配自己(null = null返回false)。为什么会这样呢?
编辑:对不起,刚发现了这个。为了清晰起见,简化了我的代码。
select * from table1 where [a]=? and [b] is null and [c]=?
当"为空时,它才起作用。之后是另一个条件。我该如何解决这个问题?
编辑2:我通过重新排列条件使其工作,因此' [b]为空'在声明的最后。但有人可以向我解释一下吗?如果" [b]为空,为什么语句不能正常工作"之后是"和[c] =?"?
答案 0 :(得分:0)
您是否可以确定要捕获的行中列[b]的内容实际上是否包含NULL值?听起来它们可能是空的而不是NULL。
如果是这种情况,运行下面的查询将会起作用。
select * from table1 where [a]=? and [b] =''