我的存储过程中有一个查询,如下所示:
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)
)
)基于真假逻辑,这是正确的吗?
发布于 2016-06-17 20:09:45
简化:
(
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的原始逻辑是正确的。
https://stackoverflow.com/questions/37889342
复制相似问题