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>
説明
冗長な等号演算子を避ける
ここで示した例では、各 WHEN 句の末尾にある「=@locationID」の部分が間違っていることに注意してください。 CASE ステートメント自体は、「@locationID」と比較するための正しい列を割り当てます。
動的 SQL
クエリを作成するときに場所の種類と列名が不明な場合は、ストアド プロシージャまたは動的 SQL を使用して、オンザフライで CASE ステートメントを構築できます。
以上がCASE ステートメントを使用して SQL WHERE 句でデータを動的にフィルタリングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。