sql >> Base de Datos >  >> RDS >> PostgreSQL

Seleccione columnas con nombres de columnas particulares en PostgreSQL

column es una palabra reservada . No puede usarlo como identificador a menos que lo escriba entre comillas dobles. Me gusta:"column" .

Sin embargo, no significa que debas hacerlo. Simplemente no use palabras reservadas como identificadores. Nunca.

A...

seleccione una lista de columnas con 2010 en su nombre:

.. puede usar esta función para construir el comando SQL dinámicamente desde la tabla del catálogo del 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;

Llamar:

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

Devuelve algo como:

SELECT foo2010, bar2010_id, FROM weather_data;

No puede hacer esto completamente dinámico, porque el tipo de retorno es desconocido hasta que realmente construyamos la consulta.