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

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

Susan Sarandon
リリース: 2024-12-27 08:29:10
オリジナル
209 人が閲覧しました

How to Dynamically Update a Table Based on Split Date Ranges and Set Names Using a Case Statement?

指定された文字列を分割して Case ステートメントを準備する

特定の日付範囲と対応するセット名に基づいてテーブルを効率的に更新するには、分割する必要があります指定された文字列を個々のコンポーネントに動的に追加します。このアプローチにより、可変入力パラメーターの処理が可能になり、更新操作の柔軟性が確保されます。

日付範囲とセット名の分割

  1. 分割日付範囲:

    • p_date を分割するパラメータはカンマ(,)を区切り文字として使用します。これにより、「start_date から end_date」という形式の日付範囲の配列が生成されます。
    SELECT unnest(string_to_array(p_dates, ',')) AS date_range;
    ログイン後にコピー
  2. 分割セット名:

    • 同様に、コンマ (,) を使用して p_sets パラメータを分割します。区切り文字。これにより、セット名の配列が生成されます。
    SELECT unnest(string_to_array(p_sets, ',')) AS set_name;
    ログイン後にコピー

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

日付範囲が設定されたら名前が分割されている場合、次を使用して動的な case ステートメントを構築できます。手順:

  1. 日付範囲のループ:

    • 日付範囲の配列を繰り返します。
  2. 範囲を抽出境界:

    • split_part を使用して各範囲から開始日と終了日を抽出し、区切り文字を「to」として指定します。
  3. ケースを構築する句:

    • 日付範囲ごとに、update table_name set set_name を使用して、対応するセット名を更新します。
    • BETWEEN 条件を使用して、日付範囲に基づいて行をフィルタリングします。 .

次のコード スニペットは、動的 case ステートメント:

PREPARE upd_tbl AS
UPDATE table_name
SET    set_name = CASE
  WHEN given_date BETWEEN split_part(, 'to', 1)::date
                       AND split_part(, 'to', 2)::date THEN 
  ELSE null
END;
ログイン後にコピー

ここで:

  • $1 は日付範囲のプレースホルダーです。
  • $2 は対応するセット名のプレースホルダーです。

date_range と set_name をパラメータとしてこのプリペアド ステートメントを実行すると、テーブルは指定された日付範囲とセット名に基づいて更新されます。

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

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