ホームページ >データベース >mysql チュートリアル >Case ステートメントを使用して日付範囲に基づいてテーブルのセット名を動的に更新する方法
分割日付とセットを使用した更新のための動的 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 サイトの他の関連記事を参照してください。