0

我正在尝试使用存储过程根据一些字符串(即 nvarchar 参数)从数据库中获取数据。

我正在尝试以下查询:

IF (@Ticket_Status IS NOT NULL AND @Ticket_Status = 'Open')
    Begin
         Select * From Tickets
         Where Ticket_Status = 'Open'
    End
else
    Begin
         Select * From Tickets
         Where Ticket_Status = 'Closed'
    End 

但它没有给我任何结果。

如果我尝试简单的查询,例如:

Select * From Tickets
Where Ticket_Status = 'Open'

它给了我适当的结果。我做错了什么?这是在 SQL 存储过程中使用 If Else 的正确方法吗?

4

1 回答 1

0

不知道为什么需要查询的两个副本和一个大IF条件。NOT NULL 没有理由检查它是否等于某物。如果后者为真,则前者也必须为真。

Select <cols> 
From dbo.Tickets
Where Ticket_Status = COALESCE(@Ticket_Status, N'Closed');
于 2013-04-02T14:01:20.863 回答