我試圖構造一個簡單的查詢,它將允許用戶根據人口統計信息篩選客戶端列表。在我看來,這LIKE
將是最簡單的解決方案,例如:如何使用多個參數進行搜索,同時在SQL-Server的結果中包含空值
SELECT D.Name
FROM demographics D
WHERE D.City LIKE @cityVar
AND D.Sex LIKE @sexVar
AND D.Age LIKE @ageVar
...
變量傳遞到使用組合框的查詢;因此如果用戶決定不根據任何給定的參數進行過濾,我只需將'%'
傳遞給該變量,從而有效地轉義WHERE
子句中的該行。
但是,如果我想要返回包含過濾字段中的NULL
值的行,這不起作用。例如,如果D.Employer
的值爲NULL
,則客戶失業;但通過'%'
到@employedVar
(意味着用戶想要返回就業和失業客戶)忽略D.Employer
爲NULL
的所有行。
我該如何構造WHERE
子句的邏輯,以考慮大量參數,同時仍允許用戶對任何給定參數進行轉義過濾,包括NULL
的值在適當的時候?
在第一個示例中,交換OR的順序可能會提高性能(由於短路),但我現在無法對其進行測試。 – cadrell0