我想编写一个简单的查询来选择Postgresql中的多个列.但是,我一直在收到错误 – 我尝试了一些选项,但它们对我不起作用.目前我收到以下错误:
org.postgresql.util.PsqlException: ERROR: Syntax error at or near
“column”
要获取具有值的列,请尝试以下操作:
select * from weather_data where column like '%2010%'
有任何想法吗?
column是
reserved word.除非您双引号,否则不能将其用作标识符.喜欢:“专栏”.
但是,这并不意味着你应该这样做.只是不要使用保留字作为标识符.永远.
至 …
select a list of columns with 2010 in their name:
..您可以使用此函数从系统目录表pg_attribute动态构建sql命令:
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;
你不能使它完全动态,因为在我们实际构建查询之前,返回类型是未知的.