Oracle 用换行符替换字符
Oracle Replace char with newline
我正在尝试用换行符替换 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 替换了'|'与 ' '
示例输入:
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
...
使用 TRANSLATE 或 REPLACE 在 SQL*Plus
中非常适合我。如果您无法正常查看,则可能是您的 客户端.
有问题
例如,
SQL接近
使用翻译
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)?
我正在尝试用换行符替换 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 替换了'|'与 ' '
示例输入:
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
...
使用 TRANSLATE 或 REPLACE 在 SQL*Plus
中非常适合我。如果您无法正常查看,则可能是您的 客户端.
例如,
SQL接近
使用翻译
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)?