Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с запросом [D7, MSSQL]


Киря ©   (2005-10-08 08:13:00) 

Имеется следующий запрос:
Select * from Operations where (TabNoP=:TabNoP) and (TabNoV=:TabNoV) and (TabNoT=:TabNoT)

причем Поле TabNoT может иметь значение null

И если параметр TabNoT= NULL то в результате получается пустая таблица хотя данные удовлетворяющие условию запроса в таблице есть
В чем причина неработоспособности запроса?
И что нужно сделать что-бы все работало?
Заранее спасибо


Fay   (2005-10-09 04:29:00) [1]

create table Test(
Field1 int not null identity primary key,
Field2 varchar(20) null
)
go
insert into Test values('1')
insert into Test values(null)
insert into Test values('2')
insert into Test values(null)
go
set ansi_nulls off
select * from Test where Field2 = null
set ansi_nulls on
go
select * from Test where Field2 = null


sniknik   (2005-10-08 10:53:00) [2]

а ну да, тут надо или или. условие Sergey13 ©   (08.10.05 10:10) [2] вернее чем у меня, только параметры  надо разные сделать
или  с одним :
DECLARE @TabNoT INT
SET @TabNoT = :TabNoT

Select .... (@TabNoT is Null and TabNoT is Null) or (@TabNoT is Not Null and TabNoT=@TabNoT)


sniknik   (2005-10-08 10:39:00) [3]

> В чем причина неработоспособности запроса?
сравнение null с собой (null = null) не дает положительного результата.
надо проверять дополнительно. т.е.
and (TabNoT=:TabNoT or TabNoT IS NULL)


Sergey13   (2005-10-08 10:10:00) [4]

Вмето

and (TabNoT=:TabNoT)

((:TabNoT is Null) and (TabNoT is Null)) or ((:TabNoT is Not Null) and (TabNoT=:TabNoT))


DJON   (2005-10-08 09:31:00) [5]

Если таблица пустая значит один из параметров не удовлетворяет условию
(TabNoP=:TabNoP) and (TabNoV=:TabNoV) and (TabNoT=:TabNoT)
попробуй построить запрос с каждым параметром например:
Select * from Operations where TabNoT=:TabNoT и так далее


Наверх

Титульная страница Поиск, карта сайта Написать письмо