1

我正在研究一个存储过程来获取一个案例的帐户。如果@accounts参数是NULL,我想获取该案例的所有帐户。如果@accountsNOT NULL,那么它将是一个逗号分隔的 accountid 字符串。我想要一个可以处理这个问题的 where 子句。如果说的话,那@accounts就是NULL抓住这个案子的所有账户。否则,使用@accounts参数并获取具有指定帐户 ID 的帐户。我想避免一个大语句,它要求我使用 2 个不同的子句IF进行两次查询。WHERE

DECLARE @caseId BIGINT,
    DECLARE @accounts VARCHAR(255)

    SELECT TOP 1 @userId = userId FROM TblTraceCur t
    WHERE caseId = @caseid
    ORDER BY processDate DESC

    SELECT    
              .... (select logic) ...
    WHERE     
              t.caseId = @caseID AND 
              t.userId = @userId AND
              t.shortStock = 0 AND
              ... (where I need the new logic) ...
    order by t.tracln ASC

非常感谢!

4

1 回答 1

3

这对我有用。添加(@accounts IS NULL OR @accounts LIKE ('%,' + CAST(t.caseId AS VARCHAR(255)) + ',%'))您在帖子中指定的位置。当然,您必须确保@accounts 中的第一个字符和最后一个字符是逗号才能正常工作,但我认为这是最简单的。没有逗号会错误地返回 ID,例如:@accounts = 12 将返回 ID 1、2 和 12。使用逗号并确保它们是第一个和最后一个字符可以防止这种情况发生。

于 2012-07-25T22:52:44.747 回答