Oracle用换行符替换字符



我正试图用换行符替换Select中的一个字符。但它不起作用。

这是代码:

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

但这不起作用,似乎Oracle用替换了"|"

示例输入:

音频.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|

示例输出:

音频.hx摄影机.hx圆圈.hx颜色.hx组件.hx核心.hx首秀.hx绘图.hx发射器.hx实体.hx事件.hx游戏.hx输入.hx IO.hx日志.hx

我所期望的:

音频.hx

Camera.hx

圆圈.hx

颜色.hx

SQL*Plus中使用TRANSLATEREPLACE户端出现问题

例如,


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>

我希望它能有所帮助:

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)?

最新更新