oracle:仅删除空白行

时间:2019-05-15 20:51:54

标签: sql regex oracle

如何在sql或plsql中删除空行 输入

select 'test1
    test2
  test3



test4' from dual;

预期输出:

test1
test2
test3
test4

TRANSLATE正在删除所有换行符

2 个答案:

答案 0 :(得分:3)

首先,您可以使用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

答案 1 :(得分:2)

您可以在一个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.