2013-06-23 3 views
0

У меня есть таблица, как это значение NULLChosing строку со значением нулевой ячейки

Bookid StuId  borrowdate ReturnedDate 
2  10   2013-05-01 2013-05-31 
2  10   2013-06-01 NULL 

означает, что книга не возвращается. Я хочу, чтобы выбрать 2-ую строку и я попробовать это на SQL сервере

CREATE PROC validate(
    @stuid varchar(50), 
    @bookid int, 
    @returndate date) 
AS  
SELECT * FROM Borrow 
    WHERE StuID = @stuid 
     AND BookID = @bookid 
     AND ReturnedDate = @returndate 
    go 

но результат нулевой таблицы. Любой может мне помочь, спасибо!

+0

'and ReturnedDate is null ', как сообщит вам любая рудиментарная документация SQL (или поиск Google). – dbenham

ответ

1

В SQL вы не можете проверить, если что-то равно NULL - это недействительный тест.

Так что, если вы хотите, чтобы найти книги, которые не вернулись, вы можете попробовать:

SELECT * FROM Borrow 
    WHERE StuID = @stuid 
     AND BookID = @bookid 
     AND ReturnedDate IS NULL; 

Или, если вам нужно использовать параметр, который может быть пустым, вы могли бы сделать что-то вроде этого:

SELECT * FROM Borrow 
    WHERE StuID = @stuid 
     AND BookID = @bookid 
     AND ISNULL(ReturnedDate, '2008-11-11') = ISNULL (@returndate, '2008-11-11'); 

Обратите внимание, что IS NULL в первом - это другой зверь до ISNULL( во втором.

Первый, IS NULL возвращает true, если поле равно null.

Второй говорит: «Если поле имеет значение null, используйте это значение вместо».

Даты представляют собой стандартный формат даты в формате SQL, и это зависит от выбора волшебной даты, на которую никто никогда не может вернуть книгу (например, за 50 лет до создания библиотеки).

+0

merci beaucoup, он работал :) –