为了账号安全,请及时绑定邮箱和手机立即绑定

不应该是(2*LEVEL-1)个空格?

不应该是(2*LEVEL-1)个空格?

慕容森 2023-04-21 19:15:06
select LEVEL, LPAD(' ', 2*LEVEL-1)...这个SQL中lpad函数是要为字段左侧添加空格,这里使用2*LEVEL-1,可解释却说是在左边填充2*(LEVEL-1)个空格?不是(2*LEVEL-1)个空格?谢谢!
查看完整描述

2 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

lpad用法
lpad(字段名,填充长度,填充的字符)

如果是你那种写法的话函数用法你都用错了
select LEVEL, LPAD(LEVEL,2*LEVEL-1,' ')...

这样才是在左侧加空格
至于添加多少个空格,无非是个四则运算的问题,自己多写几个就知道了

查看完整回答
反对 回复 2023-04-23
?
GCT1015

TA贡献1827条经验 获得超4个赞

你应该是看的Oracle 10g的一个专门讲SQL的书,里面的讲分层语句start with和connect by的章节。其实楼主的语句没错,应该意思是在‘ ’空格左边再填上N个空格,通过LEVEL来决定到底空多少,因为减了一个长度,但是最前面是以' '开始的,所以总空格的长度是2*LEVEL,然后在结果集显示时,看着更直观。只是楼主语句没有copy完。
SELECT LEVEL,
LPAD(' ', 2 * LEVEL - 1) || first_name || ' ' || last_name AS employee
FROM more_employees
START WITH employee_id = (
SELECT employee_id
FROM more_employees
WHERE first_name = 'Kevin'
AND last_name = 'Black'
)
CONNECT BY PRIOR employee_id = manager_id;
完整的语句应该是。

 


查看完整回答
反对 回复 2023-04-23
  • 2 回答
  • 0 关注
  • 396 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信