移除数据库表字符串字段中XML的所有空行
移除XML字符串中的所有空行
要解决这个问题,你需要调整正则表达式并启用全局替换,确保所有空行都被移除。
正确解决方案
使用以下SQL语句:
SELECT regexp_replace(record, '(?m)^\\s*\\r?\\n', '', 'g') AS record FROM MyTable;
原方案问题分析
你之前的语句有两个关键问题:
- 未启用全局替换:PostgreSQL的
regexp_replace默认只替换第一个匹配项,必须添加第四个参数'g'才能全局替换所有符合条件的空行。 - 正则逻辑冗余:
(?!(\s*\r?\n))这个负前瞻限制了匹配范围,导致只有后面不跟着空行的空行才会被替换,漏掉了末尾的空行。
另一种可选方案
如果你的XML中可能存在连续多个空行,也可以通过合并连续换行来实现需求:
SELECT regexp_replace(record, '\\r?\\n\\s*\\r?\\n', '\\n', 'g') AS record FROM MyTable;
这个语句会将所有连续的换行(中间可包含空白字符)替换为单个换行,同样能达到移除空行的效果。
内容的提问来源于stack exchange,提问作者Abhishek
相关产品推荐
相关产品推荐

