我知道比较运算符不适用于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
当@order
有numerals
时,此查询是好的,但当null
有Order is null
时,它当然不起作用,因为对于该情况,where子句应为exec() with a string of query
,
所以问题是,如果不在我的查询中使用{{1}}或条件语句,有没有办法做到这一点?
答案 0 :(得分:2)
在where子句中将@order
与NULL
进行比较,如果是,请使用order IS NULL
和OR
与您现有的条件一起使用,如果它有值:
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