ホームページ >データベース >mysql チュートリアル >Case ステートメントを使用して日付範囲に基づいてテーブルのセット名を動的に更新する方法

Case ステートメントを使用して日付範囲に基づいてテーブルのセット名を動的に更新する方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-29 13:39:11454ブラウズ

How to Dynamically Update a Table's Set Name Based on Date Ranges Using a Case Statement?

分割日付とセットを使用した更新のための動的 Case ステートメント

問題:

指定された 2 つのケースパラメータ、p_dates と p_sets、それぞれ日付範囲とセット名、目標を含む指定された日付範囲に基づいて、テーブルの set_name 列を適切なセット名で更新する動的 SQL case ステートメントを準備します。

解決策:

1 。日付の分割:

p_dates パラメーターを個々の日付範囲に分割するには、区切り文字としてコンマ (,) を使用して string_to_array() 関数を使用します:

SELECT unnest(string_to_array(p_dates, ',')) AS date_range;

2.セットの分割:

同様に、p_sets パラメーターを個々のセット名に分割するには、同じ手法を使用します:

SELECT unnest(string_to_array(p_sets, ',')) AS set_name;

3。動的 Case ステートメントの準備:

分割された日付とセットを使用して、動的に Case ステートメントに連結します:

CASE
  WHEN given_dates BETWEEN split_part(date_range, 'to', 1)::date
                     AND split_part(date_range, 'to', 2)::date
  THEN set_name
  ELSE NULL
END

実装:

table_name テーブルを更新するには、次の SQL を使用します。ステートメント:

UPDATE table_name
SET set_name = (
  CASE
    WHEN given_dates BETWEEN split_part(date_range, 'to', 1)::date
                           AND split_part(date_range, 'to', 2)::date
    THEN set_name
    ELSE NULL
  END
)
FROM split_dates
JOIN split_sets
  ON 1 = 1;

利点:

この動的なアプローチにより、パラメーターの変更に基づいた柔軟な更新が可能になり、静的な case ステートメントの必要性がなくなり、より汎用性の高いソリューションが提供されます。日付範囲とセット操作用。

以上がCase ステートメントを使用して日付範囲に基づいてテーブルのセット名を動的に更新する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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