sql >> Databáze >  >> RDS >> PostgreSQL

Vyberte sloupce s konkrétními názvy sloupců v PostgreSQL

column je rezervované slovo . Nemůžete jej použít jako identifikátor, pokud jej neuvedete v uvozovkách. Jako:"column" .

To však neznamená, že byste měli. Jen nepoužívejte vyhrazená slova jako identifikátory. Nikdy.

Do ...

vyberte seznam sloupců s rokem 2010 v názvu:

.. tuto funkci můžete použít k dynamickému sestavení příkazu SQL z tabulky systémového katalogu 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;

Volejte:

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

Vrátí něco jako:

SELECT foo2010, bar2010_id, FROM weather_data;

Nemůžete to udělat plně dynamickým, protože návratový typ je neznámý dokud dotaz skutečně nevytvoříme.



  1. Oracle 10g přijímá 5místný rok v datu

  2. Procesory AMD EPYC řady 7002 a SQL Server

  3. Co musím při odesílání dotazu uniknout?

  4. Práce s Java daty v Qlik Sense