regex - 如何使用 Postgresql 删除表中所有列的回车符和换行符?

标签 regex postgresql

我正在尝试查看是否有任何方法可以使用一条语句从表中的所有 varchar 列中删除回车符和换行符。

我知道我们可以使用类似下面的方法对单个列执行此操作

select regexp_replace(field, E'[\\n\\r]+', ' ', 'g' )

在那种情况下,我需要每一列都有一个,除非有任何简单的方法,否则我不想这样做。

感谢您的帮助!

最佳答案

您可以创建一个 plpgsql 函数来执行动态 SQL,或者直接通过 DO 运行它,如下例(将 my_table 替换为您的表的名称`):

do $$declare _q text; _table text = '<mytable>';
begin
  select 'update '||attrelid::regclass::text||E' set\n'||
         string_agg('  '||quote_ident(attname)||$q$ = regexp_replace($q$||quote_ident(attname)||$q$, '[\n\r]+', ' ', 'g')$q$, E',\n' order by attnum)
  into _q
  from pg_attribute 
  where attnum > 0 and atttypid::regtype::text in ('text', 'varchar') 
  group by attrelid
  having attrelid = _table::regclass;

  raise notice E'Executing:\n\n%', _q;

  -- uncomment this line when happy with the query:
  -- execute _q;
end;$$;

关于regex - 如何使用 Postgresql 删除表中所有列的回车符和换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38003739/

相关文章:

postgresql - Debezium Kafka 连接。十进制模式错误

regex - 使用 Sublime Text 确保 LaTeX 文档中每行一个句子

Python 不区分大小写查找并替换为相同的找到的单词

Java正则表达式如果字符串包含数字

javascript - 正则表达式从标签的 href 中获取 YouTube id 并将其嵌入 iframe 的问题

c - 将整数作为二进制发送时出现 PostgreSQL libpq "Integer out of range"错误

postgresql - 如何并发创建Gin索引? POSTGRES 和 Rails 4.2

python - StreamingHttpResponse : return database connection to pool/close it

jquery - 正则表达式jquery删除所有双空格

javascript - 将数组对象转换为字符串值