Sql server 选择具有空值单元格的行
我有一张这样的桌子Sql server 选择具有空值单元格的行,sql-server,null,row,Sql Server,Null,Row,我有一张这样的桌子 Bookid StuId borrowdate ReturnedDate 2 10 2013-05-01 2013-05-31 2 10 2013-06-01 NULL 空值表示不返回该书。我想选择第二行,并在sql server上尝试此操作 CREATE PROC validate( @stuid varchar(50), @bookid int,
Bookid StuId borrowdate ReturnedDate
2 10 2013-05-01 2013-05-31
2 10 2013-06-01 NULL
空值表示不返回该书。我想选择第二行,并在sql server上尝试此操作
CREATE PROC validate(
@stuid varchar(50),
@bookid int,
@returndate date)
AS
SELECT * FROM Borrow
WHERE StuID = @stuid
AND BookID = @bookid
AND ReturnedDate = @returndate
go
但结果是一个空表。任何人都可以帮助我,谢谢 在SQL中,无法测试某个值是否等于NULL-这不是有效的测试 因此,如果您想查找尚未归还的书籍,可以尝试:
SELECT * FROM Borrow
WHERE StuID = @stuid
AND BookID = @bookid
AND ReturnedDate IS NULL;
或者,如果需要使用可能为null的参数,可以执行以下操作:
SELECT * FROM Borrow
WHERE StuID = @stuid
AND BookID = @bookid
AND ISNULL(ReturnedDate, '2008-11-11') = ISNULL (@returndate, '2008-11-11');
请注意,第一个中的为NULL
与第二个中的为NULL(
不同
如果字段为NULL,则第一个为NULL
返回true
第二个表示“如果字段为空,则使用此值”
日期是标准的SQL日期格式,这取决于选择一个没有人可以归还图书的神奇日期(例如,图书馆创建前50年)。
和ReturnedDate为null
,任何基本的SQL文档(或谷歌搜索)都会告诉你。