【问题标题】:How do I print out a Christmas tree with SQL? [closed]如何使用 SQL 打印出圣诞树? [关闭]
【发布时间】:2021-04-02 16:13:00
【问题描述】:

嗯,是的,这是一个不严肃的问题,但是在我们许多人经历了 2020 年之后,是时候稍微轻松一下了。享受...

【问题讨论】:

    标签: sql oracle sqlplus


    【解决方案1】:

    在 xterm 或 Windows 10 命令窗口中运行以下命令将打印树,灯光随机分散,当然还有可爱的全彩。

    祝大家节日快乐!

    set lines 350 pagesize 0
    clear screen
    select replace(replace(replace(r,'X',chr(27)||'[42m'||chr(27)||'[1;'||to_char(32)||'m'||'X'||chr(27)||'[0m'),
        'T',chr(27)||'[43m'||chr(27)||'[1;'||to_char(33)||'m'||'T'||chr(27)||'[0m'),
        '@',chr(27)||'[33m'||chr(27)||'[1;'||to_char(31)||'m'||'@'||chr(27)||'[0m')
    from ( select lpad(' ',20-e-i)|| case when dbms_random.value < 0.3 then substr(s,1,e*2-3+i*2) 
           else substr(substr(s,1,dbms_random.value(1,e*2-3+i*2-1))||'@'||s,1,e*2-3+i*2) end r
    from ( select rpad('X',40,'X') s,rpad('T',40,'T') t from dual ) , 
    ( select level i, level+2 hop from dual connect by level <= 4 ) , lateral
    ( select level e from dual connect by level <= hop ) union all select lpad(' ',17)||substr(t,1,3)
    from ( select rpad('X',40,'X') s,rpad('T',40,'T') t from dual ) connect by level <= 5 );
    

    【讨论】:

      【解决方案2】:

      这是用 MSSQL 绘制圣诞树的代码

      DECLARE @g TABLE (g GEOMETRY, ID INT IDENTITY(1,1));
      
      
      
      -- Adjust Color
      
      INSERT INTO @g(g) SELECT TOP 29 CAST('POLYGON((0 0, 0 0.0000001, 0.0000001 0.0000001, 0 0))' as geometry) FROM sys.messages;
      
      -- Build Christmas Tree
      
      INSERT INTO @g(g) VALUES (CAST('POLYGON((0 0,900 0,450 400, 0 0 ))' as geometry).STUnion(CAST('POLYGON((80 330,820 330,450 640,80 330 ))' as geometry)).STUnion(CAST('POLYGON((210 590,690 590,450 800, 210 590 ))' as geometry)));
      
      -- Adjust Color
      
      INSERT INTO @g(g) SELECT TOP 294 CAST('POLYGON((0 0, 0 0.0000001, 0.0000001 0.0000001, 0 0))' as geometry) FROM sys.messages;
      
      -- Build a Star
      
      INSERT INTO @g(g) VALUES (CAST('POLYGON ((450 910, 465.716 861.631, 516.574 861.631, 475.429 831.738, 491.145 783.369, 450 813.262, 408.855 783.369, 424.571 831.738, 383.426 861.631, 434.284 861.631, 450 910))' as geometry));
      
      -- Build Colored Balls
      
      INSERT INTO @g(g) SELECT TOP 2 CAST('POLYGON((0 0, 0 0.0000001, 0.0000001 0.0000001, 0 0))' as geometry) FROM sys.messages;
      
      INSERT INTO @g(g) VALUES (CAST('CURVEPOLYGON (CIRCULARSTRING (80 290, 110 320, 140 290, 110 260, 80 290))' as geometry));
      
      INSERT INTO @g(g) SELECT TOP 2 CAST('POLYGON((0 0, 0 0.0000001, 0.0000001 0.0000001, 0 0))' as geometry) FROM sys.messages;
      
      INSERT INTO @g(g) VALUES (CAST('CURVEPOLYGON (CIRCULARSTRING (760 290, 790 320, 820 290, 790 260, 760 290))' as geometry));
      
      INSERT INTO @g(g) SELECT TOP 3 CAST('POLYGON((0 0, 0 0.0000001, 0.0000001 0.0000001, 0 0))' as geometry) FROM sys.messages;
      
      INSERT INTO @g(g) VALUES (CAST('CURVEPOLYGON (CIRCULARSTRING (210 550, 240 580, 270 550, 240 520, 210 550))' as geometry));
      
      INSERT INTO @g(g) SELECT TOP 46 CAST('POLYGON((0 0, 0 0.0000001, 0.0000001 0.0000001, 0 0))' as geometry) FROM sys.messages;
      
      INSERT INTO @g(g) VALUES (CAST('CURVEPOLYGON (CIRCULARSTRING (630 550, 660 580, 690 550, 660 520, 630 550))' as geometry));
      
      
      
      SELECT g FROM @g ORDER BY ID;
      
      GO
      

      空间结果中的输出

      在本练习中,我使用了以下空间数据和方法:

      POLYGON - 2-Dimensional 表面积(“树”、“星”和“颜色调整”区域)

      CIRCULARSTRING - 圆弧段(球圈)的集合

      CURVEPOLYGON - 由环定义的二维表面积(“彩色球”) .STUnion - 合并两个几何实例的方法。

      已按以下步骤绘制:

      1. 调整了树的颜色。我画了 29 个虚拟三角形来获得 SSMS 调色板中的第 30 种颜色,这是一种绿色。
      2. 构建三个POLYGON - 三角形并将它们联合起来。
      3. 进行了另一次颜色调整以使星星呈现金黄色。
      4. 构建一个星形的POLYGON
      5. 在每个之前构建了四个带有颜色调整的彩色圆圈。
      6. 运行脚本。
      7. 在 SSMS 中切换到 "Spatial Result" 选项卡。

      祝大家节日快乐!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-13
        • 1970-01-01
        • 2021-04-06
        • 2016-03-25
        • 1970-01-01
        相关资源
        最近更新 更多