Oracle使用换行替换char

时间:2015-03-26 08:47:24

标签: oracle replace plsql newline

我正在尝试使用换行符替换Select中的char。但它最有效。

以下是代码:

vMsg := to_char(rec.CREATED,'HH24:MI') || ' - ' || replace(rec.FILELIST, '|', chr(13) || chr(10)) || chr(13) || chr(10) || chr(13) || chr(10) || 'Test'

但这不起作用,似乎Oracle取代了' |'用' '

示例输入:

  

Audio.hx | Camera.hx | Circle.hx | Color.hx | Component.hx | Core.hx | Debug.hx | Draw.hx | Emitter.hx | Entity.hx | Events.hx | Game.hx | Input.hx | IO.hx | Log.hx |

示例输出:

  

Audio.hx Camera.hx Circle.hx Color.hx Component.hx Core.hx Debug.hx   Draw.hx Emitter.hx Entity.hx Events.hx Game.hx Input.hx IO.hx Log.hx

我的期望:

  

Audio.hx

     

Camera.hx

     

Circle.hx

     

Color.hx

     

...

2 个答案:

答案 0 :(得分:1)

使用 TRANSLATE REPLACE SQL*Plus中完美适合我。如果您无法正常查看,那么您的客户端可能会出现问题。

例如,


SQL方法

使用 TRANSLATE

SQL> WITH DATA AS
  2    (SELECT 'Audio.hx|Camera.hx|Circle.hx|Color.hx|Component.hx|Core.hx|Debug.hx' str
  3    FROM dual
  4    )
  5  SELECT str, TRANSLATE(str, '|', chr(10)) str_newline FROM DATA
  6  /

STR                                                                 STR_NEWLINE
------------------------------------------------------------------- --------------------
Audio.hx|Camera.hx|Circle.hx|Color.hx|Component.hx|Core.hx|Debug.hx Audio.hx
                                                                    Camera.hx
                                                                    Circle.hx
                                                                    Color.hx
                                                                    Component.hx
                                                                    Core.hx
                                                                    Debug.hx


SQL>

使用 REPLACE

SQL> WITH DATA AS
  2    (SELECT 'Audio.hx|Camera.hx|Circle.hx|Color.hx|Component.hx|Core.hx|Debug.hx' str
  3    FROM dual
  4    )
  5  SELECT str, REPLACE(str, '|', chr(10)) str_newline FROM DATA
  6  /

STR                                                                 STR_NEWLINE
------------------------------------------------------------------- --------------------
Audio.hx|Camera.hx|Circle.hx|Color.hx|Component.hx|Core.hx|Debug.hx Audio.hx
                                                                    Camera.hx
                                                                    Circle.hx
                                                                    Color.hx
                                                                    Component.hx
                                                                    Core.hx
                                                                    Debug.hx


SQL>

PL / SQL方法

SQL> set serveroutput on
SQL> DECLARE
  2    v_str VARCHAR2(4000);
  3  BEGIN
  4    v_str:= 'Audio.hx|Camera.hx|Circle.hx|Color.hx|Component.hx|Core.hx|Debug.hx';
  5    dbms_output.put_line(REPLACE(v_str, '|', chr(10)));
  6  END;
  7  /
Audio.hx
Camera.hx
Circle.hx
Color.hx
Component.hx
Core.hx
Debug.hx

PL/SQL procedure successfully completed.

SQL>

答案 1 :(得分:0)

我希望它有所帮助:

declare
    v_str varchar2(1000) := 'Audio.hx|Camera.hx|Circle.hx|Color.hx|Component.hx|Core.hx|Debug.hx|Draw.hx|Emitter.hx|Entity.hx|Events.hx|Game.hx|Input.hx|IO.hx|Log.hx|';
begin
    v_str := REPLACE(v_str,'|',CHR(10));

    DBMS_OUTPUT.PUT_LINE(v_str);
end;
是的,为什么你使用CHR(13)?