聖誕快樂: 用 GaussDB T 繪製一顆聖誕樹,兼論高斯資料庫語法相容

資料和雲發表於2019-12-25

轉眼就是聖誕的節日,祝大家節日快樂。用 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;


祝大家聖誕快樂,萬事如意,平平安安!



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31556440/viewspace-2670471/,如需轉載,請註明出處,否則將追究法律責任。

相關文章