我正在尝试使用存储过程基于某些字符串,即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的正确方法吗?
答案 0 :(得分:0)
不确定为什么需要两个查询副本和一个大的IF
条件。此外,没有理由检查NOT NULL
和是否等于某事。如果后者是真的,前者也必须是真的。
Select <cols>
From dbo.Tickets
Where Ticket_Status = COALESCE(@Ticket_Status, N'Closed');