2012-08-24 33 views
5

tôi đã tuyên bố như thế này:Làm thế nào để sử dụng IS NULL trong một truy vấn parametrized (Delphi)

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

Bây giờ tôi đang tự hỏi làm thế nào tôi có thể parametrize truy vấn này:

SELECT * From Table WHERE Feld IS :Value 

Như tôi đã không thể pas 'NOT NULL' cho một tham số, tôi nghĩ rằng điều đó là không thể - nhưng có lẽ ai đó biết một giải pháp cho điều đó? Cảm ơn!

Trả lời

6

Bạn có thể thử một cái gì đó như thế này (thử nghiệm với Firebird 2.5):

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

sau đó vượt qua 'Y' hoặc 'N' tới tham số IS_NULL.

Tùy thuộc vào cơ sở dữ liệu bạn đang sử dụng, bạn có thể cần phải thay thế IIF bằng một cấu trúc CASE hoặc tương tự.

+0

Điều đó hoạt động tốt - cảm ơn sự trợ giúp nhanh chóng! – user1619275

+0

Tùy thuộc vào nhiệm vụ OP, trong Firebird có thể được sử dụng [SQL_NULL] (http://www.firebirdsql.org/refdocs/langrefupd25-sqlnull.html) kiểu dữ liệu. Nhưng nó có được hỗ trợ hay không, phụ thuộc vào thư viện truy cập dữ liệu, OP đang sử dụng. –

+0

@ da-soft Thú vị liên kết, cảm ơn bạn! Nhưng những gì tôi hiểu từ trang đó là 'SQL_NULL' có thể được sử dụng để chỉ định các tham số tùy chọn, không phải là NULL-ness của dữ liệu được truy vấn. Nó không có vẻ hữu ích cho nhiệm vụ này. –

Các vấn đề liên quan