如何用 select 语句列出相似的列名?
How to list similar column names with select statement?
我的table有几个名字相似的列,比如year_1、year_2、year_3等,有没有简单的方法把它们都列出来不输入所有这些?我不能使用 select *,因为我不想要其他列。谢谢
您必须在存储过程中使用动态 nzplsql。虽然存储过程不容易 return tables,但是您可以让它很容易地输出一个 select 语句,该语句通过游标从 _v_relation_column
构建。在 bash 中捕获它并将其从 table 馈送到 nzsql
到 select。或者你可以 return 一个 reftable.
/* Stored procedure header. */
declare sql varchar;
declare col record;
begin_proc
sql := 'select ';
for col in select * from _v_relation_column where name = 'TABLE_NAME' loop
if col.attname like 'year%'
sql := sql || attname || ',';
end if;
sql := substring(sql,1,length(sql)-1); --To strip the last comma. Could probably be more elegant.
sql := sql || ' from table_name;';
raise notice '%',sql;
end_proc;
/* Stored procedure footer. */
我的table有几个名字相似的列,比如year_1、year_2、year_3等,有没有简单的方法把它们都列出来不输入所有这些?我不能使用 select *,因为我不想要其他列。谢谢
您必须在存储过程中使用动态 nzplsql。虽然存储过程不容易 return tables,但是您可以让它很容易地输出一个 select 语句,该语句通过游标从 _v_relation_column
构建。在 bash 中捕获它并将其从 table 馈送到 nzsql
到 select。或者你可以 return 一个 reftable.
/* Stored procedure header. */
declare sql varchar;
declare col record;
begin_proc
sql := 'select ';
for col in select * from _v_relation_column where name = 'TABLE_NAME' loop
if col.attname like 'year%'
sql := sql || attname || ',';
end if;
sql := substring(sql,1,length(sql)-1); --To strip the last comma. Could probably be more elegant.
sql := sql || ' from table_name;';
raise notice '%',sql;
end_proc;
/* Stored procedure footer. */