SQL Server の条件付き WHERE 句
SQL Server では、条件付き WHERE 句を使用して、特定の条件に基づいてデータをフィルタリングする基準を指定できます。場合によっては、条件を評価し、それに応じてフィルターを調整するために、条件付き WHERE 句が必要になることがあります。ここでは、条件付き WHERE 句を効果的に作成して使用する方法を説明します。
文法
基本的な条件付き WHERE 句は次の構文に従います:
<code class="language-sql">WHERE 逻辑表达式 AND (CASE WHEN 条件 THEN 表达式1 ELSE 表达式2 END)</code>
例
あなたが提供した例を考えてみましょう:
<code class="language-sql">SELECT DateAppr, TimeAppr, ... FROM [test].[dbo].[MM] WHERE DateDropped = 0 AND (CASE WHEN @JobsOnHold = 1 THEN DateAppr >= 0 ELSE DateAppr != 0 END)</code>
このクエリは、DateDropped が 0 で、DateAppr が @JobsOnHold 値に基づいて特定の条件を満たすデータをフィルタリングしようとします。ただし、構文が正しくありません。
正しい文法
構文エラーを修正するには、条件式をかっこで囲みます:
<code class="language-sql">SELECT DateAppr, TimeAppr, ... FROM [test].[dbo].[MM] WHERE DateDropped = 0 AND ( (ISNULL(@JobsOnHold, 0) = 1 AND DateAppr >= 0) OR (ISNULL(@JobsOnHold, 0) != 1 AND DateAppr != 0) )</code>
説明
ISNULL(@JobsOnHold, 0)
: これにより、@JobsOnHold
が NULL または欠落している場合、0 として扱われることが保証されます。 OR
演算子は、どちらの場合でも条件が正しく機能することを保証します。 @JobsOnHold
が 1 の場合、DateAppr
は 0 以上でなければなりません。それ以外の場合、@JobsOnHold
が 1 でない場合、DateAppr
は 0 であってはなりません。
その他の注意事項
これらのガイドラインに従うことで、SQL Server の条件付き WHERE 句を効果的に使用して、特定の条件に基づいてデータをフィルタリングできます。
以上がSQL Server で条件付き WHERE 句を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。