小编典典

在PostgreSQL中选择具有特定列名称的列

sql

我想编写一个简单的查询来选择PostgreSQL中的许多列。但是,我不断收到错误-我尝试了一些选项,但它们对我没有用。目前,我收到以下错误:

org.postgresql.util.PSQLException:错误:“列”处或附近的语法错误

要获取具有值的列,请尝试以下操作:

select * from weather_data where column like '%2010%'

有任何想法吗?


阅读 197

收藏
2021-05-05

共1个答案

小编典典

column 保留字 。除非您双引号,否则不能将其用作标识符。像:"column"

不过,这并不意味着您应该这样做。只是不要使用保留字作为标识符。曾经。

到 …

选择名称为2010的列的列表:

..您可以使用此功能从系统目录表动态构建SQL命令
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;

称呼:

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

返回类似:

SELECT foo2010, bar2010_id, FROM weather_data;

您不能使其完全动态,因为在实际构建查询之前,返回类型是 未知 的。

2021-05-05