灵活的选择查询

时间:2012-07-21 11:22:18

标签: sql

我知道比较运算符不适用于SQL中的null值,因此我们使用isnull,现在我遇到了像这样的表的情况,

ID      Name        Order
3   KnowledgeBase1  NULL
4   KnowledgeBase2  NULL
5   KnowledgeBase3  NULL
6   KnowledgeBase4  NULL
7   Child of first  1

现在,您可以看到Order可以是null或任何数值,

现在这里是选择查询

declare @order int = null

select 
        ID,
        Name,
        Order
from tbl
where Order = @order

@ordernumerals时,此查询是好的,但当nullOrder is null时,它当然不起作用,因为对于该情况,where子句应为exec() with a string of query

所以问题是,如果不在我的查询中使用{{1}}或条件语句,有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

在where子句中将@orderNULL进行比较,如果是,请使用order IS NULLOR与您现有的条件一起使用,如果它有值:

select 
        ID,
        Name,
        Order
from tbl
where 
  Order = @order
  OR (@order IS NULL AND order IS NULL)

您尚未指定RDBMS,但快速测试显示这适用于MySQL ...

答案 1 :(得分:0)

如果您使用isnull与您的列名称一起工作

  

声明@order int =''

     

选择ID,名称,订单   来自tbl,其中isnull(Order,'')= @order