3

null比較演算子はSQL の値では機能しないことを知っているので、そのために を使用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??

4

2 に答える 2

2

where句で比較@orderし、そうである場合は、値がある場合に機能する既存の条件と一緒にandを使用します。NULLorder IS NULLOR

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

RDBMS を指定していませんが、簡単なテストでこれが MySQL で動作することがわかります...

于 2012-07-21T11:25:57.557 に答える
0

列名に isnull を使用すると、うまくいきます

@order int = '' を宣言します

isnull(Order,'') = @order の場合、tbl から ID、名前、注文を選択します

于 2012-07-21T11:36:48.200 に答える