ホームページ > データベース > mysql チュートリアル > 代替手段を使用して SQL Server に条件付き WHERE 句を実装する方法

代替手段を使用して SQL Server に条件付き WHERE 句を実装する方法

Susan Sarandon
リリース: 2025-01-18 11:16:08
オリジナル
640 人が閲覧しました

How to Implement Conditional WHERE Clauses in SQL Server with Alternatives?

SQL Server の条件付き WHERE 句: 実装と代替手段

SQL Server では、条件付き WHERE 句を使用して、指定された式の値に基づいてフィルター条件を動的に適用できます。次のシナリオを考えてみましょう:

DateDropped 列が特定の値と一致するデータをテーブルから取得したいとします。ただし、@JobsOnHold という名前のパラメーターに基づいて追加のフィルターを適用することも必要です。 @JobsOnHold が 1 に設定されている場合、DateAppr が 0 以上であるレコードを含める必要があります。それ以外の場合は、DateAppr が 0 に等しいレコードを除外します。

あなたが提供した最初のクエリは正しくありません。 CASE を使用した条件付き WHERE 句の正しい構文は次のとおりです:

<code class="language-sql">WHERE DateDropped = 0 AND
CASE
    WHEN @JobsOnHold = 1 THEN DateAppr >= 0
    ELSE DateAppr != 0
END</code>
ログイン後にコピー

ただし、CASE を使用する必要のない、より単純な代替手段が存在します。

<code class="language-sql">WHERE DateDropped = 0 AND
(
    (ISNULL(@JobsOnHold, 0) = 1 AND DateAppr >= 0)
    OR
    (ISNULL(@JobsOnHold, 0) != 1 AND DateAppr != 0)
)</code>
ログイン後にコピー

このバージョンでは、ISNULL が NULL である可能性がある場合を処理するために @JobsOnHold 関数が使用されます。 @JobsOnHold のデフォルト値は 0 に設定されており、パラメーターに値が割り当てられていない場合でもクエリが正しく実行されます。

条件付き WHERE 句を理解する

条件付き WHERE 句は式を評価し、式が true か false に基づいて結果をフィルタリングします。式が true の場合、その行は結果セットに含まれます。それ以外の場合、その行は除外されます。

条件 WHERE 句の条件は任意に複雑にすることができ、高度にカスタマイズ可能なフィルタリングが可能になります。たとえば、過去 24 時間以内に追加されたすべてのレコードを除外したり、特定のステータス コードを持つレコードのみを含めたりするクエリを作成できます。

条件付き WHERE 句の代替

場合によっては、条件付き WHERE 句を使用せずに目的の結果を取得するための代替手段がある場合があります。たとえば、COALESCE 関数を使用して、@JobsOnHold が NULL の場合を処理できます。あるいは、@JobsOnHold の可能な値ごとに 2 つの別々のクエリを作成することもできます。

ただし、条件付き WHERE 句を使用すると、複雑なフィルタリング ロジックを SQL クエリに適用するための簡潔かつ効率的な方法が提供されます。これらの仕組みと存在する代替手段を理解することで、それらを効果的に使用して必要なデータを取得できます。

以上が代替手段を使用して SQL Server に条件付き WHERE 句を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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