我正在尝试使用换行符替换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
...
答案 0 :(得分:1)
使用 TRANSLATE 或 REPLACE 在SQL*Plus
中完美适合我。如果您无法正常查看,那么您的客户端可能会出现问题。
例如,
使用 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>
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)?