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

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

Patricia Arquette
リリース: 2024-12-29 13:39:11
オリジナル
460 人が閲覧しました

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

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