PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Wybierz kolumny z określonymi nazwami kolumn w PostgreSQL

column to słowo zastrzeżone . Nie możesz użyć go jako identyfikatora, chyba że umieścisz go w podwójnym cudzysłowie. Na przykład:"column" .

Nie oznacza to jednak, że powinieneś. Po prostu nie używaj słów zastrzeżonych jako identyfikatorów. Kiedykolwiek.

Aby...

wybierz listę kolumn z 2010 w nazwie:

.. możesz użyć tej funkcji do dynamicznego zbudowania polecenia SQL z tabeli katalogu systemowego 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;

Zadzwoń:

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

Zwraca coś takiego:

SELECT foo2010, bar2010_id, FROM weather_data;

Nie możesz uczynić tego w pełni dynamicznym, ponieważ typ zwracany jest nieznany dopóki nie zbudujemy zapytania.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nowe dane nie są zachowywane w kolumnie tablicy Rails w Postgresie

  2. SQLAlchemy, Psycopg2 i Postgresql COPY

  3. kolejność kolumn w instrukcji SELECT * - gwarantowana?

  4. Unikalne ograniczenie kombinacji dwóch kolumn?

  5. java.lang.ClassNotFoundException:org.postgresql.Driver, Android