while循环PL/SQL向后读取一个字符串

While loop PL/SQL read a string backwards

我需要帮助解决这个问题,使用 PL/SQL 如何使用 while 循环向后读取字符串?

我知道 for 循环有一个叫做 reverse 的方法,但我不知道如何使用 while 循环。如果你能帮助我,我将不胜感激

这是一种选择:

SQL> set serveroutput on
SQL>
SQL> declare
  2    l_str   varchar2(20) := 'Littlefoot';
  3    i       number;
  4    retval  varchar2(20);
  5  begin
  6    i := length(l_str);
  7    while i <> 0 loop
  8      retval := retval || substr(l_str, i, 1);
  9      i := i - 1;
 10    end loop;
 11    dbms_output.put_line(retval);
 12  end;
 13  /
toofelttiL

PL/SQL procedure successfully completed.

SQL>

如果不必 PL/SQL,分层查询和 listagg 可能是另一种方法:

SQL> var l_str varchar2(20)
SQL> exec :l_str := 'Littlefoot';

PL/SQL procedure successfully completed.

SQL> select listagg(substr(:l_str, length(:l_str) - level + 1, 1), '') within group (order by level) result
  2  from dual
  3  connect by level <= length(:l_str);

RESULT
--------------------------------------------------------------------------------
toofelttiL

SQL>