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

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

Linda Hamilton
リリース: 2025-01-18 10:56:10
オリジナル
257 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート