楼主: kinghow

[PL/SQL] 开发面试题

[复制链接]
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
11#
发表于 2016-12-24 08:01 | 只看该作者
newkid 发表于 2016-12-23 22:41
with d as (
select '1121121123115' str from dual
)

很好很强大
SQL> with d as (
  2  select '112112112113224225123' str from dual
  3  )
  4  ,n as (
  5  select level n,str from d connect by level<=length(str)
  6  )
  7  select s1||'+'||s2||'='||to_char(s1+s2)
  8    from (select substr(n1.str,n1.n,n2.n) s1
  9                ,substr(n1.str,n1.n+n2.n,n3.n) s2
10                ,substr(n1.str,n1.n+n2.n+n3.n) s3
11            from n n1,n n2,n n3
12         )
13  where s3 like to_char(s1+s2)||'%';

S1||'+'||S2||'='||TO_CHAR(S1+S2)
--------------------------------------------------------------
1+1=2
112112+112113=224225
12112+1=12113
1+1=2
1+1=2
12+1=13
2+2=4
1+2=3

使用道具 举报

回复
论坛徽章:
548
生肖徽章2007版:猴
日期:2008-05-16 11:28:59生肖徽章2007版:马
日期:2008-10-08 17:01:01SQL大赛参与纪念
日期:2011-04-13 12:08:17授权会员
日期:2011-06-17 16:14:53ITPUB元老
日期:2011-06-21 11:47:01ITPUB官方微博粉丝徽章
日期:2011-07-01 09:45:27ITPUB十周年纪念徽章
日期:2011-09-27 16:30:472012新春纪念徽章
日期:2012-01-04 11:51:222012新春纪念徽章
日期:2020-11-30 22:13:24海蓝宝石
日期:2012-02-20 19:24:27
12#
发表于 2016-12-24 13:00 | 只看该作者
newkid 发表于 2016-12-23 22:41
with d as (
select '1121121123115' str from dual
)

大师一出手,其他立马相形见绌

使用道具 举报

回复
论坛徽章:
1
优秀写手
日期:2014-11-26 06:00:12
13#
 楼主| 发表于 2016-12-26 10:48 | 只看该作者
本帖最后由 kinghow 于 2016-12-26 10:51 编辑

好简洁,好强大。我当时写了个复杂的。


CREATE TABLE T1(
  R  VARCHAR2(10 BYTE),
  A  NUMBER,
  B  NUMBER,
  C  NUMBER
);


CREATE OR REPLACE PROCEDURE prc_test1 (X NUMBER)
AS
   v_str   VARCHAR2(1000);
   v_len   NUMBER;
   v_b2    NUMBER;
   v_a     VARCHAR2(1000);
   v_b     VARCHAR2(1000);
   v_c     VARCHAR2(1000);
BEGIN
   v_str :=TO_CHAR(x);
   v_len :=LENGTH(v_str);
   DELETE FROM t1;
   FOR n IN 1..v_len
   LOOP
      FOR a IN 1 .. ROUND((v_len-n - 1)/2)
      LOOP
         v_a :=SUBSTR(v_str,n, a);
         v_b2:=LEAST(ROUND((v_len-n - a)/2), (v_len-n - 2* a+1));
         FOR b IN 1..v_b2
         LOOP
           v_b := SUBSTR(v_str,n + a,b);
           v_c := SUBSTR(v_str,n + a+b, LENGTH(v_a+v_b));
            INSERT INTO t1
                VALUES (CASE WHEN v_a + v_b =v_c THEN '√' END,
                         v_a,
                         v_b,
                         v_c);
         END LOOP;
      END LOOP;
   END LOOP;
   COMMIT;
END;
/


exec prc_test1 (112358);
select * from t1;
  1     1     2
     1     12    35
     11    2     35
     11    23    58
  1     2     3
     1     23    58
     12    3     58
  2     3     5
  3     5     8
这里把所有可能的截取都列出了,方便调试。


使用道具 举报

回复
论坛徽章:
1
优秀写手
日期:2014-11-26 06:00:12
14#
 楼主| 发表于 2016-12-26 11:23 | 只看该作者
顺带说一句,那位小伙伴是java开发,这题是要求他用java答

使用道具 举报

回复
论坛徽章:
27
ITPUB官方微博粉丝徽章
日期:2011-08-17 10:35:36托尼托尼·乔巴
日期:2017-10-25 16:45:57秀才
日期:2017-04-05 13:18:06秀才
日期:2017-03-02 10:35:322016猴年福章
日期:2016-02-23 09:58:342016猴年福章
日期:2016-02-18 09:31:302015年新春福章
日期:2015-03-06 11:57:312014年新春福章
日期:2014-02-18 16:42:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:07:31
15#
发表于 2016-12-26 16:53 | 只看该作者
solomon_007 发表于 2016-12-24 13:00
大师一出手,其他立马相形见绌

我憋了一下午没憋出来,看来智商是硬伤

使用道具 举报

回复
论坛徽章:
0
16#
发表于 2016-12-26 21:21 | 只看该作者
没看出是题目的意思

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
17#
发表于 2016-12-27 08:23 | 只看该作者
kinghow 发表于 2016-12-26 11:23
顺带说一句,那位小伙伴是java开发,这题是要求他用java答

jdbc

使用道具 举报

回复
论坛徽章:
548
生肖徽章2007版:猴
日期:2008-05-16 11:28:59生肖徽章2007版:马
日期:2008-10-08 17:01:01SQL大赛参与纪念
日期:2011-04-13 12:08:17授权会员
日期:2011-06-17 16:14:53ITPUB元老
日期:2011-06-21 11:47:01ITPUB官方微博粉丝徽章
日期:2011-07-01 09:45:27ITPUB十周年纪念徽章
日期:2011-09-27 16:30:472012新春纪念徽章
日期:2012-01-04 11:51:222012新春纪念徽章
日期:2020-11-30 22:13:24海蓝宝石
日期:2012-02-20 19:24:27
18#
发表于 2016-12-27 09:41 | 只看该作者
gyhgood 发表于 2016-12-26 16:53
我憋了一下午没憋出来,看来智商是硬伤

  现在很少看到你啊,没事的时候还是上来看看

使用道具 举报

回复
论坛徽章:
27
ITPUB官方微博粉丝徽章
日期:2011-08-17 10:35:36托尼托尼·乔巴
日期:2017-10-25 16:45:57秀才
日期:2017-04-05 13:18:06秀才
日期:2017-03-02 10:35:322016猴年福章
日期:2016-02-23 09:58:342016猴年福章
日期:2016-02-18 09:31:302015年新春福章
日期:2015-03-06 11:57:312014年新春福章
日期:2014-02-18 16:42:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:07:31
19#
发表于 2016-12-28 11:19 | 只看该作者
solomon_007 发表于 2016-12-27 09:41
现在很少看到你啊,没事的时候还是上来看看

我一般不忙的时候就上来看看,出来冒泡的时候少而已,因为回帖速度没版主们快,经常是等我想出来帖子的答案都翻页了

使用道具 举报

回复
论坛徽章:
548
生肖徽章2007版:猴
日期:2008-05-16 11:28:59生肖徽章2007版:马
日期:2008-10-08 17:01:01SQL大赛参与纪念
日期:2011-04-13 12:08:17授权会员
日期:2011-06-17 16:14:53ITPUB元老
日期:2011-06-21 11:47:01ITPUB官方微博粉丝徽章
日期:2011-07-01 09:45:27ITPUB十周年纪念徽章
日期:2011-09-27 16:30:472012新春纪念徽章
日期:2012-01-04 11:51:222012新春纪念徽章
日期:2020-11-30 22:13:24海蓝宝石
日期:2012-02-20 19:24:27
20#
发表于 2016-12-28 11:37 | 只看该作者
gyhgood 发表于 2016-12-28 11:19
我一般不忙的时候就上来看看,出来冒泡的时候少而已,因为回帖速度没版主们快,经常是等我想出来帖子的答 ...

我们曾经都活跃过,现在人越来越少了,回的也更少。。。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表