DB2 删除空行

DB2 remove empty lines

我有这样的字符串

#
word_1
word_2
#
word_3
#
#

其中 # 代表空行。 我想删除那些空行,以获得

word_1
word_2
word_3

我尝试用 '' 替换 CHR(10) 和 CHR(13) 但后来我得到了

word_1word_2word_3

我知道我可以使用 LTRIM 删除第一个空行,但如何删除所有空行?

您必须删除所有换行符后跟换行符,以及字符串开头和结尾的单个换行符。所有这些替换都可以用一个表达式完成。

从 v11.1 开始

select regexp_replace (s, '\r\n(?=\r\n)|^\r\n|\r\n$', '')
from (values x'0d0a' || 'abc' || x'0d0a0d0a'|| 'def' || x'0d0a') t (s)

请注意,您可能将换行符编码为 x'0a' 而不是 x'0d0a'。从上面的表达式中删除本例中的所有 \r 个字符。

dbfiddle link.

从 v9.7 开始

select xmlcast (xmlquery ('replace (replace ($d, "^\r\n|\r\n$", ""), "(\r\n){2,}", "")' passing s as "d") as varchar (100))
from (values x'0d0a' || 'abc' || x'0d0a0d0a'|| 'def' || x'0d0a') t (s)

dbfiddle link.