[英]Rewriting a logic in SQL Query
我的存儲過程中有一個查詢,如下所示:
SELECT .....
FROM .....
WHERE .....
AND
(
@date_from IS NULL
OR (ahd.dealid IS NULL OR @date_from >= ahd.dealdf)
)
AND
(
@date_to IS NULL
OR (ahd.dealid IS NULL OR @date_to <= ahd.dealdt)
)
我試圖這樣重寫:
SELECT .....
FROM .....
WHERE .....
AND
(
(@date_from IS NULL AND @date_to IS NULL)
OR
(ahd.dealid IS NULL)
OR
(
(@date_from IS NOT NULL AND @date_from >= ahd.dealdf)
AND
(ahd.dealid IS NOT NULL AND @date_to <= ahd.dealdt)
)
)
根據TRUE / FALSE邏輯是否正確?
簡化一下:
(
1 OR 2 OR 3
)
AND
(
4 OR 2 OR 5
)
這就是你正在看的,所以
2 OR ((1 OR 3) AND (4 OR 5))
與...不同
(1 AND 4) OR 2 OR (3 AND 5)
原始邏輯將適用於1和5或3和4,而在第二個變體中會丟失。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.