sql >> Database teknologi >  >> RDS >> PostgreSQL

Vælg kolonner med bestemte kolonnenavne i PostgreSQL

column er et reserveret ord . Du kan ikke bruge det som identifikator, medmindre du dobbeltciterer det. Ligesom:"column" .

Det betyder dog ikke, at du skal. Bare brug ikke reserverede ord som identifikatorer. nogensinde.

Til ...

vælg en liste over kolonner med 2010 i deres navn:

.. du kan bruge denne funktion til at bygge SQL-kommandoen dynamisk fra systemkatalogtabellen 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;

Ring til:

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

Returnerer noget som:

SELECT foo2010, bar2010_id, FROM weather_data;

Du kan ikke gøre dette fuldt dynamisk, fordi returtypen er ukendt indtil vi rent faktisk bygger forespørgslen.



  1. Den bedste måde at cache json på

  2. Sådan fungerer REPLACE() i MariaDB

  3. Hvordan arbejder man med PGpoint for Geolocation ved hjælp af PostgreSQL?

  4. SQL Server AlwaysOn ( Availability Group ) Arkitektur og trin for trin installation -2