数据库语法_圣诞快乐:用GaussDB T 绘制一颗圣诞树,兼论高斯数据库语法兼容...

转眼就是圣诞的节日,祝大家节日快乐。用 GaussDB T (也就是 GaussDB 100)绘制一棵圣诞树,纯国产,更喜庆。

话不多说,上图:

b995f62b07dbbc80458099e0334c29aa.png

SQL如下:

SELECTCASE WHEN ENMOTECH = 1 THEN lpad('*',GAO,' ')ELSE lpad(' ',GAO + 1-ENMOTECH,' ') || rpad('*',lag(ENMOTECH) OVER (PARTITION BY 1ORDER BYENMOTECH) + ENMOTECH -2,'*')END "圣诞快乐!"FROM(SELECTLEVEL ENMOTECH ,MAX(LEVEL) OVER (PARTITION BY 1) GAOFROM dualCONNECT BY LEVEL < 19 )UNION ALLSELECTlpad(lpad('*',3,'*'),19)FROM dualCONNECT BY LEVEL < 5;

主要,这段 SQL 代码,和 Oracle 完全兼容,在 Oracle 中执行效果如下:

a1dd4373a116da94f0b045ea5608d8a9.png

总结一下,在使用了非常特殊的查询语法后,GaussDB 工作的非常愉快:

Case When;LAG 分析函数;CONNECT by;

当然,杨长老说了,我这棵圣诞树不太好看,他根据公司的祝贺图重新画了一个,杨长老说圣诞树应该是这样的:

78efd4781e1eeb60beed7e4b27f4cc57.png

再来图:

49a3ee444a1ca7317f3c3cb07bd14bdb.png

上代码:

WITH leaf AS (SELECTlpad(rpad('*',(ROWNUM-1)* 2 + 1,'*'),ROWNUM + 20) leaf,ROWNUMFROMdualCONNECT BYLEVEL <= 3),lv AS (SELECTROWNUM lvFROMdualCONNECT BYLEVEL <= 5),leafs AS (SELECTlpad(rpad('*',(ROWNUM-1)* 2 + 1 +(lv-1)* 2,'*'),ROWNUM + 20 + lv) leafFROMleaf,lv),root AS (SELECTlpad(rpad('*',5,'*'),24)FROMdualCONNECT BYLEVEL <= 4)SELECTleafFROMleafsUNION ALLSELECT*FROMroot;

祝大家圣诞快乐,万事如意,平平安安!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值