欢迎光临
我们一直在努力

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

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

话不多说,上图:

SQL如下:

SELECT

CASE WHEN ENMOTECH = 1 THEN lpad('*',


GAO,

' ')

ELSE lpad(' ',


GAO + 1-ENMOTECH,

' ') || rpad('*',


lag(ENMOTECH) OVER (PARTITION BY 1

ORDER BY


ENMOTECH) + ENMOTECH -2,

'*')

END "圣诞快乐!"

FROM

(SELECT

LEVEL ENMOTECH ,

MAX(LEVEL) OVER (PARTITION BY 1) GAO

FROM dual

CONNECT BY LEVEL < 19 )

UNION ALL

SELECT

lpad(lpad('*',3,'*'),19)

FROM dual

CONNECT 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,

ROWNUM

FROM


dual

CONNECT BY

LEVEL <= 3),

lv AS (

SELECT

ROWNUM lv

FROM


dual

CONNECT BY

LEVEL <= 5),

leafs AS (

SELECT

lpad(rpad('*',


(ROWNUM-1)* 2 + 1 +(lv-1)* 2,

'*'),

ROWNUM + 20 + lv) leaf

FROM


leaf,


lv),

root AS (

SELECT

lpad(rpad('*',

5,

'*'),

24)

FROM


dual

CONNECT BY

LEVEL <= 4)

SELECT


leaf

FROM


leafs

UNION ALL

SELECT


*

FROM


root;

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

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。