2012-08-24 22 views
5

Mam wypowiedzi jak to:Jak korzystać z IS NULL w parametryzowaną zapytania (Delphi)

SELECT * From Table WHERE Feld IS NULL 
SELECT * From Table WHERE Feld IS NOT NULL 

Teraz zastanawiam się, jak mogłam parametrize to zapytanie:

SELECT * From Table WHERE Feld IS :Value 

Ponieważ nie mogę pas 'NOT NULL' do parametru, myślę, że to w ogóle niemożliwe - ale może ktoś zna na to rozwiązanie? Dzięki!

Odpowiedz

6

można spróbować coś takiego (testowane z Firebird 2.5):

SELECT * FROM TABLE WHERE (IIF(FIELD IS NULL, 'Y', 'N') = :IS_NULL) 

następnie przekazać 'Y' lub 'N' do parametru IS_NULL.

W zależności od używanej bazy danych może być konieczne zastąpienie IIF przez konstrukcję CASE lub podobną.

+0

To działa dobrze - dzięki za szybką pomoc! – user1619275

+0

W zależności od zadania OP, w Firebird można użyć [SQL_NULL] (http://www.firebirdsql.org/refdocs/langrefupd25-sqlnull.html) typu danych. Ale czy jest to obsługiwane czy nie, zależy od biblioteki dostępu do danych, z której korzysta OP. –

+0

@ da-soft Ciekawy link, dziękuję! Ale zrozumiałem na tej stronie, że 'SQL_NULL' może być użyty do określenia parametrów opcjonalnych, a nie NULL-u dla zapytanych danych. Nie wydaje się to przydatne do tego zadania. –

Powiązane problemy