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

PostgreSQLで特定の列名を持つ列を選択します

    column 予約語です 。二重引用符で囲まない限り、識別子として使用することはできません。例:"column"

    しかし、そうすべきだという意味ではありません。予約語を識別子として使用しないでください。これまで。

    に...

    名前に2010が含まれる列のリストを選択します:

    ..この関数を使用して、システムカタログテーブル pg_attributeから動的にSQLコマンドを作成できます。

    CREATE OR REPLACE FUNCTION f_build_select(_tbl regclass, _pattern text)
      RETURNS text AS
    $func$
        SELECT format('SELECT %s FROM %s'
                     , string_agg(quote_ident(attname), ', ')
                     , $1)
        FROM   pg_attribute 
        WHERE  attrelid = $1
        AND    attname LIKE ('%' || $2 || '%')
        AND    NOT attisdropped  -- no dropped (dead) columns
        AND    attnum > 0;       -- no system columns
    $func$ LANGUAGE sql;
    

    電話:

    SELECT f_build_select('weather_data', '2010');
    

    次のようなものを返します:

    SELECT foo2010, bar2010_id, FROM weather_data;
    

    戻りタイプが不明であるため、これを完全に動的にすることはできません。 実際にクエリを作成するまで。



    1. カンマ区切りリストMySQLのアイテムをカウントする方法

    2. オンラインデータベースの管理に役立つ5つのヒントとコツ

    3. T-SQL日時データ型

    4. マルチDCPostgreSQL:VPNを介して別の地理的場所にスタンバイノードを設定する