首页 > 解决方案 > Where 子句 SQL (Oracle) 中的案例

问题描述

我想过滤 Where 语句中的查询。我想将 ID 与“IN”进行比较,但前提是输入具有值。如果此文本为空,我不想比较。防止错误查询

例子:

StringProductIDs = ''



WHERE
    ({Issue}.[ServiceRequestId] IN (@StringServiceRequestIDs)) 
    AND ({ServiceRequest}.[Id] IN (@StringServiceRequestIDs))
    AND ({Product}.[Id] IN (@StringProductIDs) OR @StringProductIDs = '')   /* Is this one that i want to prevent*/
    AND EXTRACT(MONTH FROM {Sprint}.[CompleteDate]) = @Month
    AND EXTRACT(YEAR FROM {Sprint}.[CompleteDate]) = @Year

在这种情况下,如果作为参数传递的值具有值,我只想过滤 things.id。如果它是空的,我不想比较并避免使用“AND”行

或者尝试另一种方法:)。仅当此输入具有值时才可以运行查询?如果它没有值,它什么也不返回。如果输入值正常运行 –

非常感谢

标签: sqloraclewhere-clause

解决方案


你需要OR

WHERE  (things.active = 1 AND things.state = 2) AND
       (things.id IN (@INPUT) OR @INPUT IS NULL); 

推荐阅读