0

このwhere句を持つ:

1番目と2番目のプレースホルダー?値を持つことができます:1 || NULL
3番目の場所のホルダーが動的に追加されます(配列)

IF(ISNULL(?),1,xy.id) IN 
     (IF(ISNULL(?),1,(SELECT x.id FROM x WHERE name IN (?))))   

送信されるデータがnullの場合、句が常にtrueを返すようにするため、このタイプのisnullチェックが必要です。基本的に、データがnull1 IN 1の場合、句はnullでない場合、対応するIDを検索しますが、if()関数は1つの結果(セットではない)のみを返すように制限します。phpでクエリ全体を動的に構築する以外に、ここにはどのようなオプションがありますか?

4

1 に答える 1

1

あなたのwhere句でこれを行うことができます

WHERE (ISNULL(?) OR xy.id IN (SELECT x.id FROM x WHERE name IN (?)))
于 2012-10-26T18:32:39.373 に答える