PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Изберете колони с конкретни имена на колони в PostgreSQL

column е запазена дума . Не можете да го използвате като идентификатор, освен ако не го цитирате. Като:"column" .

Не означава обаче, че трябва. Просто не използвайте запазени думи като идентификатори. Някога.

До ...

изберете списък с колони с 2010 в името им:

.. можете да използвате тази функция за динамично изграждане на SQL командата от таблицата на системния каталог pg_attribute :

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apache Spark:JDBC връзката не работи

  2. Цикъл върху измерението на масива в plpgsql

  3. DROP FUNCTION без да знаете броя/вида на параметрите?

  4. GroupingError:ERROR:колоната трябва да се появи в клаузата GROUP BY или да се използва в агрегатна функция

  5. Как да UPSERT (СЛИВАНЕ, ВМЕСВАНЕ ... ПРИ ДУБЛИРАНЕ НА АКТУАЛИЗИРАНЕ) в PostgreSQL?