如何使用plsql块将字符串拆分为字符

时间:2013-12-16 09:12:00

标签: plsql

 declare
 str varchar2(20):='&your_string';
 begin
 for i in 1..length(str)
 loop
 dbms_output.put_line(substr(str,i,1));
 end loop;
 end;
 /

我正在尝试将字符串拆分为字符,我想在每行中打印一个字符。我试图用上面的代码打印它们,但它不打印空格字符。如果有人有想法请帮助我?

2 个答案:

答案 0 :(得分:4)

我打赌你在sqlplus运行PL / SQL块,对吗? dbms_output + sqlplus组合本身很棘手,当您与whitespace混合时,您遇到了麻烦。我的建议是完全避免whitespace敏感dbms_output,最好是dbms_output

可以使用sqlplus settings获得所需的输出。请参阅以下示例:

空行神奇地消失了:

SQL> set serveroutput on
SQL> begin
  dbms_output.put_line('1');
  dbms_output.put_line(' ');
  dbms_output.put_line('2');
end;
/

1
2

PL/SQL procedure successfully completed.

出现空行:

SQL> set serveroutput on size 100000 format wrapped
SQL> set trimspool on
SQL> begin
  dbms_output.put_line('1');
  dbms_output.put_line(' ');
  dbms_output.put_line('2');
end;
/
1

2

PL/SQL procedure successfully completed.

SQL>

答案 1 :(得分:-1)

这段代码还可以,你可能没有把serveroutput放在试试这个

声明

str varchar2(20):='i n dia';

开始

for i in 1..length(str)

DBMS_OUTPUT.PUT_LINE(SUBSTR(STR,I,1));

结束循环;

端;

即使有空格

代码相同