PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Selecione colunas com nomes de coluna específicos no PostgreSQL


column é uma palavra reservada . Você não pode usá-lo como identificador, a menos que o coloque entre aspas duplas. Como:"column" .

Não significa que você deve, no entanto. Só não use palavras reservadas como identificadores. Sempre.

Para ...

selecione uma lista de colunas com 2010 em seu nome:

.. você pode usar esta função para construir o comando SQL dinamicamente a partir da tabela de catálogo do sistema 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;

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

Retorna algo como:
SELECT foo2010, bar2010_id, FROM weather_data;

Você não pode tornar isso totalmente dinâmico, porque o tipo de retorno é desconhecido até que realmente construamos a consulta.