我想找到反向字符串程序。我找到了许多例子但没有解释for循环中究竟发生了什么:
DECLARE
ln_rev_input varchar2(50);
ln_input varchar2(50):= '&input';
BEGIN
FOR i in reverse 1..length(ln_input) LOOP
ln_rev_input := ln_rev_input||substr(ln_input, i, 1);
END LOOP;
dbms_output.put_line(ln_rev_input);
END;
我不明白这一行,特别是使用'||'在这个计划中:
ln_rev_input := ln_rev_input||substr(ln_input, i, 1);
我知道这个'||'用于连接字符串,但不了解ln_rev_input的分配方式。
由于
答案 0 :(得分:2)
Oracle / PLSQL ||
运算符允许您将两个或多个字符串连接在一起。
以上代码的作用是反转输入字符串。假设您传递了一个名为Oracle
的字符串,它的作用是从字符串Oracle
的末尾开始,使用函数substr(ln_input, i, 1)
一次取一个字符并将该字符连接到ln_rev_input
变量中的任何值。
启动时,ln_rev_input
为空,ln_rev_input := ln_rev_input||substr(ln_input, i, 1);
的结果为e
。
当它进入下一次迭代时,字符l
被连接到变量ln_rev_input
内的任何值,即e
- 所以这段代码就像< / p>
ln_rev_input := 'e' || 'l';
将导致ln_rev_input
的值更改为el
。这持续6次,这是字符串的长度 - 我们使用length(ln_input)
找到 - 最后,ln_rev_input
的值将为elcarO
。