我想编写一个简单的查询来选择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;
你不能使它完全动态,因为在我们实际构建查询之前,返回类型是未知的.