关于年份的SQL设定

以下SQL语句是设定年的语句,请问具体的理解是怎么样的?请高手们详细讲解一下,特别是to_char(sysdate,‘YYYY’)-LEVEL+1和connect by LEVEL<=50这两段,谢谢!

select to_char(sysdate,‘YYYY’)-LEVEL+1 years from dual connect by LEVEL<=50

笑笑宝贝 发布于 2022-2-19 21:50
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
CD20160914Lv8专家互助
发布于2022-2-19 22:38(编辑于 2022-2-19 22:45)

这是oracel中有的语句

首先

 to_char(sysdate,‘YYYY’)  sysdate是取oracel数据库当前的日期比如今天是2022-02-19,那么这个就得到日期,然后用to_char的yyyy参数就只返回年了。。得到2022的文本数字

LEVEL是oracel数据库中特有伪列。。然后结果最后面的connect by LEVEL<=50,就是说会返回1-50的一个数字序号,,,再结合上面的就是用2022依次去减1-50的序号 并加1 就是相当于第一行就是2022-1+1 =2022  第二行就是2022-2+1  =2021   这样依次类推下去。。。

2022-02-19_224128.png

详细的说明教程可以看看这里:Oracle connect by level 小结(一)_VincentQB的博客-CSDN博客

  • 笑笑宝贝 笑笑宝贝(提问者) 非常感谢!再问一下,语句中的dual 又是什么?数据库中好像没有建立dual 这个一样表。
    2022-02-20 09:19 
  • 笑笑宝贝 笑笑宝贝(提问者) 我刚才查百度,明白了dual是什么表,非常感谢!
    2022-02-20 09:26 
  • 2关注人数
  • 341浏览人数
  • 最后回答于:2022-2-19 22:45
    请选择关闭问题的原因
    确定 取消
    返回顶部