oracle如何使用字符串中的换行符

时间:2016-12-28 10:17:39

标签: sql oracle

我想退回换行

 CALC_LENGTH :=regexp_replace(CALC_LENGTH,  '([\x0B|)', ' ');
 CALC_LENGTH :=translate(CALC_LENGTH, chr(11), '     ');

使用translate()或regexp总会给我一个新行

示例:

if PR is null then
CALC_LENGTH :=regexp_replace(CALC_LENGTH,  '([\x0B|)', ' ');
else
CALC_LENGTH := where var1 >var2;
end if;

BEGIN
select ..... from tab1
'||CALC_LENGTH||'
  insert into....
endif;

如果pr为null,即使使用trasnalte或regexp,我也会得到空行结果。

select ..... from tab1

insert into....

我想要输出结果如下:

select ..... from tab1
insert into....

1 个答案:

答案 0 :(得分:1)

尝试TRANSLATE功能,过去曾经和我一起工作过很多次。我不确定哪个ASCII将映射到所需的输出,您可以参考下面的块并保留所需的CHR语句:

DECLARE
    CALC_LENGTH VARCHAR2(100);

BEGIN
    CALC_LENGTH := 'Hi!'||chr(10)||'i'||CHR(11)||'z'||CHR(12)||'y'||chr(13)||'a';
    CALC_LENGTH :=regexp_replace(CALC_LENGTH,  '[\x0B|]', ' ');
    CALC_LENGTH := TRANSLATE(CALC_LENGTH, CHR(10), ' ');
    CALC_LENGTH := TRANSLATE(CALC_LENGTH, CHR(11), ' ');
    CALC_LENGTH := TRANSLATE(CALC_LENGTH, CHR(12), ' ');
    CALC_LENGTH := TRANSLATE(CALC_LENGTH, CHR(13), ' ');
    DBMS_OUTPUT.PUT_LINE('select ..... from tab1'||
                         CALC_LENGTH||
                         'insert into....');
END;
/