1 支持奥运,趣味挑战用一句SQL实现五角星输出 - Oracle开发 - ITPUB论坛 - IT168旗下专业技术社区

ITPUB??ì3
ITPUB论坛 » Oracle开发 » 支持奥运,趣味挑战用一句SQL实现五角星输出

标题: [精华] 支持奥运,趣味挑战用一句SQL实现五角星输出
  本主题由 junsansi 于 2008-5-7 14:15 加入精华 
离线 nyfor
Oracle Fan


来自 苏州
精华贴数 2
个人空间 0
技术积分 5033 (236)
社区积分 91 (3255)
注册日期 2002-1-6
论坛徽章:8
现任管理团队成员ITPUB元老管理团队2007贡献徽章管理团队2006纪念徽章会员2007贡献徽章会员2006贡献徽章
授权会员ITPUB新首页上线纪念徽章    

发表于 2008-5-4 12:21 
支持奥运,趣味挑战用一句SQL实现五角星输出

支持奥运!
请用一句SQL语句实现输出一个五角星.

因为存在字符的行距和字符间距不一致导致五角星比较难看一些.
贴上一个DOS窗口的结果:


[ 本帖最后由 nyfor 于 2008-5-4 12:28 编辑 ]


__________________
 
帮助别人,也在帮助自己!
Oracle Version 8.1.7
Oracle Version 9.2.0

看别人不顺眼是自己修养不够!
顶部
离线 花无忧
版主



精华贴数 0
个人空间 0
技术积分 598 (2977)
社区积分 1 (36827)
注册日期 2005-7-5
论坛徽章:4
现任管理团队成员生肖徽章2007版:鼠生肖徽章2007版:牛ITPUB新首页上线纪念徽章  
      

发表于 2008-5-4 14:38 
楼主是强人呀!佩服


顶部
离线 jiqing1004
吉庆


精华贴数 0
个人空间 0
技术积分 82 (18469)
社区积分 4 (17626)
注册日期 2007-5-26
论坛徽章:2
2008北京奥运纪念徽章:帆船2008北京奥运纪念徽章:皮划艇激流回旋    
      

发表于 2008-5-4 14:46 
这个有点难度  关注下


顶部
离线 haibo_li


精华贴数 0
个人空间 0
技术积分 110 (14992)
社区积分 21 (7208)
注册日期 2008-3-31
论坛徽章:0
      
      

发表于 2008-5-4 14:56 
看看,等N人


__________________
静心
顶部
离线 Steven_1981
学生


精华贴数 0
个人空间 0
技术积分 2952 (462)
社区积分 8 (11254)
注册日期 2005-8-31
论坛徽章:6
会员2007贡献徽章会员2006贡献徽章生肖徽章2007版:鸡数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星
      

发表于 2008-5-4 16:18 
select * from ( select '               *                 ' from dual  
   union all
               select .........
  union all
                select . ....
   union all .....  )

这样也算一句吧。


__________________
每天学一点,每天多一点,一切皆有可能! BLOG:http://blog.itpub.net/steven1981 MAIL:hyfufo@163.com
顶部
离线 nyfor
Oracle Fan


来自 苏州
精华贴数 2
个人空间 0
技术积分 5033 (236)
社区积分 91 (3255)
注册日期 2002-1-6
论坛徽章:8
现任管理团队成员ITPUB元老管理团队2007贡献徽章管理团队2006纪念徽章会员2007贡献徽章会员2006贡献徽章
授权会员ITPUB新首页上线纪念徽章    

发表于 2008-5-4 16:26 


QUOTE:
原帖由 Steven_1981 于 2008-5-4 16:18 发表
select * from ( select '               *                 ' from dual  
   union all
               select .........
  union all
                select . ....
   union all .....  )

这样也算一句吧。




__________________
 
帮助别人,也在帮助自己!
Oracle Version 8.1.7
Oracle Version 9.2.0

看别人不顺眼是自己修养不够!
顶部
在线/呼叫 junsansi
无名扫把


来自 bj
精华贴数 6
个人空间 7250
技术积分 5683 (213)
社区积分 343 (1540)
注册日期 2006-7-17
论坛徽章:54
现任管理团队成员2008北京奥运纪念徽章:蹦床2008北京奥运纪念徽章:拳击2008北京奥运纪念徽章:游泳2008北京奥运纪念徽章:曲棍球2008北京奥运纪念徽章:垒球
      

发表于 2008-5-4 16:28 



__________________
[三思笔记]学习动态性能表
[三思笔记]一步一步学rman
[三思笔记]oracle著名及非著名函数介绍
[三思笔记]Statspack初步学和用
[三思笔记]RMAN高级应用之Duplicate复制数据库
[三思笔记]使用传输表空间的特性复制数据
[三思笔记]一步一步学DataGuard

沉淀是一件很枯燥的事情,我要从沉淀中汲取营养,于枯燥中寻找乐趣,我没疯,你才是疯子,哇哈哈,哇哈哈哈哈~~
============================================
http://www.5ienet.com我爱我佳
扫地不过是我表面上的工作,我真正的身份其实是无名老僧------------------手里那根扫把~~~~
顶部
离线 visual2006
为什么没有玫瑰



精华贴数 0
个人空间 0
技术积分 530 (3410)
社区积分 4 (17341)
注册日期 2006-7-23
论坛徽章:1
ITPUB新首页上线纪念徽章     
      

发表于 2008-5-4 16:55 
LZ能说一下你的算法?


顶部
离线 nyfor
Oracle Fan


来自 苏州
精华贴数 2
个人空间 0
技术积分 5033 (236)
社区积分 91 (3255)
注册日期 2002-1-6
论坛徽章:8
现任管理团队成员ITPUB元老管理团队2007贡献徽章管理团队2006纪念徽章会员2007贡献徽章会员2006贡献徽章
授权会员ITPUB新首页上线纪念徽章    

发表于 2008-5-4 20:05 
贴出我的SQL语句, 其中数字20表示五角星每一条边上的点的个数(你也可以设置的大一些或小一些), 其中的数字5表示五角星的边数, 其中的数字2是为了调整横向字符间距与纵向行距之间的差异而设置的, 你也可以不乘以这个2, 这里只是为了输出稍微好看一些.
调整期中数字5, 你还可以输出7角星, 9角星.... 注意我的SQL不能输出6角星,8角星哟 因为我的SQL算法中是以一笔画能够画成的星为基础设计的算法的.
with a as (
            select distinct round(sum(x) over(order by n)) x,
                            round(sum(y) over(order by n)) y
              from (select n,
                           cos(trunc(n / 20) * (1-1/5) * 3.1415926) * 2 x,
                           sin(trunc(n / 20) * (1-1/5) * 3.1415926) y
                      from (select rownum - 1 n from all_objects where rownum <= 20 * 5))
          )
select replace(sys_connect_by_path(point, '/'), '/', null) star
  from (select b.y, b.x, decode(a.x, null, ' ', '*') point
          from a,
               (select *
                  from (select rownum - 1 + (select min(x) from a) x
                          from all_objects
                         where rownum <= (select max(x) - min(x) + 1 from a)),
                       (select rownum - 1 + (select min(y) from a) y
                          from all_objects
                         where rownum <= (select max(y) - min(y) + 1 from a))) b
         where a.x(+) = b.x
           and a.y(+) = b.y)
where x = (select max(x) from a)
start with x = (select min(x) from a)
connect by y = prior y
       and x = prior x + 1;

给一个7角星图:


[ 本帖最后由 nyfor 于 2008-5-4 20:06 编辑 ]


__________________
 
帮助别人,也在帮助自己!
Oracle Version 8.1.7
Oracle Version 9.2.0

看别人不顺眼是自己修养不够!
顶部
离线 ilovemk
高级会员


精华贴数 0
个人空间 0
技术积分 3660 (348)
社区积分 548 (1170)
注册日期 2007-7-8
论坛徽章:17
2008年新春纪念徽章生肖徽章:蛇生肖徽章:猪生肖徽章:马生肖徽章:龙生肖徽章:兔
生肖徽章:羊生肖徽章:虎生肖徽章:狗生肖徽章:猴生肖徽章:鸡生肖徽章:牛

发表于 2008-5-4 20:15 
精彩


__________________
道生一,一生二,二生叁,叁生万物
顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问