Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 从SQL查询中删除括号_Postgresql - Fatal编程技术网

Postgresql 从SQL查询中删除括号

Postgresql 从SQL查询中删除括号,postgresql,Postgresql,我正在修补另一个SO问题中重新使用的SQL片段: CREATE OR REPLACE FUNCTION db_to_csv(path TEXT) RETURNS void AS $$ DECLARE target RECORD; statement TEXT; BEGIN FOR target IN SELECT DISTINCT table_name FROM information_schema.columns WHERE table_schema='pu

我正在修补另一个SO问题中重新使用的SQL片段:

CREATE OR REPLACE FUNCTION db_to_csv(path TEXT) RETURNS void AS $$
DECLARE
  target RECORD;
  statement TEXT;
BEGIN
  FOR target IN
    SELECT DISTINCT table_name
    FROM information_schema.columns
    WHERE table_schema='public'
    AND position('_' in table_name) <> 1
    ORDER BY 1
  LOOP
    statement := 'COPY '
      || target
      || ' TO '''
      || path
      || '/'
      || target
      || '.csv'
      ||''' DELIMITER '';'' CSV HEADER';
    EXECUTE statement;
  END LOOP;
  return;
end;
$$ LANGUAGE plpgsql;
…而我希望该声明如下所示:

COPY Bok_F_Acc TO '/Users/jgt/dir/Bok_F_Acc.csv' DELIMIT...
我怎样才能去掉那些括号

SELECT QUOTE_IDENT(TRIM(BOTH '()' FROM target));
请注意,这将删除任意数量的前/后括号。
要最多删除其中一个,您可以使用:

SELECT QUOTE_IDENT(REGEXP_REPLACE(target, E'\^\\(|\\)\$', '', 'g'));

1)
format()
2)
quote_ident()
3)利润
从信息模式中选择不同的表名称。列
如果您只对表名称感兴趣,您可以从信息模式中选择
,其中表模式='public'和表类型='BASE table'
,并省略不同的(并限制为'BASE table',和/或改用pg_catalog.pg类。
SELECT QUOTE_IDENT(REGEXP_REPLACE(target, E'\^\\(|\\)\$', '', 'g'));