ホームページ >データベース >mysql チュートリアル >SQL Server で条件付き WHERE 句を実装するにはどうすればよいですか?

SQL Server で条件付き WHERE 句を実装するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-18 10:56:10288ブラウズ

How to Implement Conditional WHERE Clauses in SQL Server?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。