我正在处理为Oracle编写的旧SQL。即使在使用关键字Oracle和SQL谷歌搜索并检查了与+符号有关的问题之后,我仍然不了解select子句的一部分。
我已经检查了where子句here的类似问题的答案,我也找到了用于联接的Oracle文档,但是对于select子句没有意义。
在加号的作用下方给出一个SQL。
select '01,'||
lpad(
(select nvl(count(*), 0) from table1)
+
(select nvl(count(*), 0) from table2)
+
(select nvl(count(*), 0) from table3)
,9,'0')
from DUAL
示例输出
01,000011111
从示例sql输出中看,它似乎是用于连接结果,但是我想确定。
答案 0 :(得分:2)
+
不能用于字符串连接。它是用于添加。另外,count()
不会返回NULL
的值,因此不需要nvl()
。
这应该等效:
select ('01,' ||
lpad( ((select count(*) from table1) +
(select count(*) from table2) +
(select count(*) from table3)
), 9, '0'
)
)
from DUAL
答案 1 :(得分:1)
罗申,我同意戈登的观点。该代码将“ 01”与来自三个表的计数的格式化总和连接在一起。 LPAD为零,将总和的值填充为9位数字。 “ ||”是Oracle中的并置符号,尽管也有一个concat函数。很少使用。