圣诞快乐: 用 GaussDB T 绘制一颗圣诞树,兼论高斯数据库语法兼容
【摘要】 转眼就是圣诞的节日,祝大家节日快乐。用 GaussDB T (也就是 GaussDB 100)绘制一棵圣诞树,纯国产,更喜庆。话不多说,上图:SQL如下:SELECT CASE WHEN ENMOTECH = 1 THEN lpad('*', GAO, ' ') ELSE lpad(' ', GAO + 1-ENMOTECH, ' ') || rpad('*', lag(ENMOTECH) ...
转眼就是圣诞的节日,祝大家节日快乐。用 GaussDB T (也就是 GaussDB 100)绘制一棵圣诞树,纯国产,更喜庆。
话不多说,上图:
SQL如下:
SELECT CASE WHEN ENMOTECH = 1 THEN lpad('*', GAO, ' ') ELSE lpad(' ', GAO + 1-ENMOTECH, ' ') || rpad('*', lag(ENMOTECH) OVER (PARTITION BY 1ORDER BY ENMOTECH) + ENMOTECH -2, '*')END "圣诞快乐!"FROM(SELECT LEVEL ENMOTECH , MAX(LEVEL) OVER (PARTITION BY 1) GAOFROM dualCONNECT BY LEVEL < 19 )UNION ALLSELECT lpad(lpad('*',3,'*'),19)FROM dualCONNECT BY LEVEL < 5;
主要,这段 SQL 代码,和 Oracle 完全兼容,在 Oracle 中执行效果如下:
总结一下,在使用了非常特殊的查询语法后,GaussDB 工作的非常愉快:
Case When; LAG 分析函数; CONNECT by;
当然,杨长老说了,我这棵圣诞树不太好看,他根据公司的祝贺图重新画了一个,杨长老说圣诞树应该是这样的:
再来图:
上代码:
WITH leaf AS (SELECT lpad(rpad('*', (ROWNUM-1)* 2 + 1, '*'), ROWNUM + 20) leaf, ROWNUMFROM dualCONNECT BY LEVEL <= 3), lv AS (SELECT ROWNUM lvFROM dualCONNECT BY LEVEL <= 5), leafs AS (SELECT lpad(rpad('*', (ROWNUM-1)* 2 + 1 +(lv-1)* 2, '*'), ROWNUM + 20 + lv) leafFROM leaf, lv), root AS (SELECT lpad(rpad('*', 5, '*'), 24)FROM dualCONNECT BY LEVEL <= 4)SELECT leafFROM leafsUNION ALLSELECT *FROM root;
祝大家圣诞快乐,万事如意,平平安安!
本文转自“墨天轮”GaussDB频道
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)