sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQL-テーブル名としての動的な値

    PL / PgSQL EXECUTEを使用する必要があります DOを介したステートメント ブロックまたはPL/PgSQL関数(CREATE OR REPLACE FUNCTION ... LANGUAGE plpgsql )。動的SQLは、PostgreSQLで使用される通常のSQLダイアレクトではサポートされておらず、手続き型PL/PgSQLバリアントでのみサポートされています。

    DO
    $$
    BEGIN
    EXECUTE format('CREATE TABLE %I AS SELECT * FROM backup', 'backup_' || to_char(CURRENT_DATE,'yyyy-mm-dd'));
    END;
    $$ LANGUAGE plpgsql;
    

    format(...) 関数の%I および%L format-specifiersは、それぞれ適切な識別子とリテラルの引用を行います。

    リテラルの場合は、EXECUTE ... USINGを使用することをお勧めします format(...)ではなく %Lを使用 、ただし、テーブル/列名などの識別子の場合、形式は%I パターンは、冗長なquote_identの簡潔な代替手段です。 呼び出します。




    1. MariaDBの日付形式の文字列

    2. DBアプリケーションでのデータマスキング

    3. SQLAlchemy:JSONBフィールドのネストされたリストに格納されている値のフィルタリング

    4. SQL結果(mysqlまたはperlのいずれか)で空の日付を埋める最も簡単な方法は何ですか?