oracle:只删除空行
Posted
技术标签:
【中文标题】oracle:只删除空行【英文标题】:oracle: remove only blank lines 【发布时间】:2019-05-15 20:51:54 【问题描述】:如何删除sql或plsql中的空行 输入
select 'test1
test2
test3
test4' from dual;
预期输出:
test1
test2
test3
test4
TRANSLATE 正在删除所有换行符
【问题讨论】:
【参考方案1】:您可以在一个 regexp_replace 中完成。指定多行模式的参数,只需将行首的零个或多个空白字符替换为空。这样,只有行首的空格(如果有的话)会被删除,这样嵌入的空格(可能在单词之间)就会被保留,如果这是你想要的。
with data(txt) as (
select 'test1
test2
test3
test4' from dual
)
select regexp_replace(txt, '^\s*', null, 1, 0, 'm') txt
from data;
输出:
TXT
-----------------------
test1
test2
test3
test4
1 row selected.
【讨论】:
似乎比我的 wood 解决方案优雅得多;)【参考方案2】:首先你使用replace
简单地去掉空格。
在第二步中,您必须删除重复的换行符 - 仅将它们替换为一个换行符 - 用户regexp_replace
为此目的。
请注意,您需要根据您的操作系统调整 新行。 如果有标签或其他白色的东西,类似的也适用于空白。
with dta as (
select 'test1
test2
test3
test4' as txt from dual)
select regexp_replace(replace(txt,' ',null),chr(10)||'+',chr(10)) txt from dta;
TXT
-----------------------
test1
test2
test3
test4
请注意,您仍然只能得到一行结果 - 如果您想要四行结果,您必须另外拆分新行上的字符串,参见例如here
【讨论】:
以上是关于oracle:只删除空行的主要内容,如果未能解决你的问题,请参考以下文章