ホームページ > データベース > mysql チュートリアル > CASE ステートメントを使用して SQL WHERE 句でデータを動的にフィルタリングするにはどうすればよいですか?

CASE ステートメントを使用して SQL WHERE 句でデータを動的にフィルタリングするにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-10 07:15:45
オリジナル
363 人が閲覧しました

How Can I Use a CASE Statement to Filter Data Dynamically in a SQL WHERE Clause?

SQL WHERE 句の CASE ステートメント

SQL では、CASE ステートメントは条件付き評価メカニズムを提供します。さまざまな条件を指定し、これらの条件に基づいて対応する数値を返すことができます。これは、さまざまな条件に基づいてデータをフィルターする WHERE 句で特に便利です。

次のシナリオを想定します。場所タイプ パラメーター「@locationType」と場所 ID パラメーター「@locationID」の値に基づいて、「viewWhatever」という名前のビューからデータを取得する必要があります。場所の種類は、「場所」、「エリア」、「部門」のいずれかです。

CASE ステートメントを使用します

WHERE 句の CASE ステートメントを使用してこの機能を実現するには、次のようにクエリを作成します。

<code class="language-sql">SELECT column1, column2
FROM viewWhatever
WHERE
@locationID = 
  CASE @locationType
      WHEN 'location' THEN account_location
      WHEN 'area' THEN xxx_location_area 
      WHEN 'division' THEN xxx_location_division 
  END</code>
ログイン後にコピー

説明

  • CASE ステートメントは WHERE キーワードの後に​​配置されます。
  • 「@locationType」の値を条件変数として評価します。
  • WHEN 句ごとに、場所のタイプに基づいて「@locationID」との同等性をチェックする列を指定します。
  • END キーワードは CASE ステートメントを終了します。

冗長な等号演算子を避ける

ここで示した例では、各 WHEN 句の末尾にある「=@locationID」の部分が間違っていることに注意してください。 CASE ステートメント自体は、「@locationID」と比較するための正しい列を割り当てます。

動的 SQL

クエリを作成するときに場所の種類と列名が不明な場合は、ストアド プロシージャまたは動的 SQL を使用して、オンザフライで CASE ステートメントを構築できます。

以上がCASE ステートメントを使用して SQL WHERE 句でデータを動的にフィルタリングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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