我想编写一个简单的查询来选择PostgreSQL中的许多列。但是,我不断收到错误-我尝试了一些选项,但它们对我没有用。目前,我收到以下错误:
org.postgresql.util.PSQLException:错误:“列”处或附近的语法错误
要获取具有值的列,请尝试以下操作:
select * from weather_data where column like '%2010%'
有任何想法吗?
column是 保留字 。除非您双引号,否则不能将其用作标识符。像:"column"。
column
"column"
不过,这并不意味着您应该这样做。只是不要使用保留字作为标识符。曾经。
到 …
选择名称为2010的列的列表:
..您可以使用此功能从系统目录表动态构建SQL命令 pg_attribute :
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;
您不能使其完全动态,因为在实际构建查询之前,返回类型是 未知 的。