在pl / sql中使用双竖条

时间:2015-04-26 02:55:05

标签: sql oracle plsql

我想找到反向字符串程序。我找到了许多例子但没有解释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的分配方式。

由于

1 个答案:

答案 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