码迷,mamicode.com
首页 > 数据库 > 详细

oracle 数据库开发面试题,当时笔试的时候一个没做出来,现附原题及答案

时间:2014-09-19 17:02:55      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   ar   数据   div   sp   log   

1、

ID
1
2
3
5
6
7
8
10
11
12
15

表名tt,用sql找出ID列中不连续的ID,例如其中没有的4:

--创建表及数据
CREATE TABLE tt(ID INTEGER);

INSERT INTO tt 
SELECT 1 FROM dual
UNION ALL
SELECT 2 FROM dual
UNION ALL
SELECT 3 FROM dual
UNION ALL
SELECT 5 FROM dual
UNION ALL
SELECT 6 FROM dual
UNION ALL
SELECT 7 FROM dual
UNION ALL
SELECT 8 FROM dual
UNION ALL
SELECT 10 FROM dual
UNION ALL
SELECT 11 FROM dual
UNION ALL
SELECT 12 FROM dual
UNION ALL
SELECT 15 FROM dual;
COMMIT;

 

--用到了connect by level 造数据
WITH IT AS
 (SELECT LEVEL ID FROM DUAL CONNECT BY LEVEL <= (SELECT MAX(ID) FROM TT))
SELECT A.ID
  FROM IT A
 WHERE NOT EXISTS (SELECT 1 FROM TT B WHERE A.ID = B.ID)

 

2、

将录入不规范的房间信息整理成规范格式

不规范表(多个房间用逗号分割)

ID ROOM
1 101,102
2 201,202,203
3 301
.......  

 

 

 

 

 

规范表

ID ROOM
1 101
1 102
2 201
2 202
2 203
3 301
......  

 

 

 

 

 

 

 

 

--单行单列转多行
--创建表及数据
create table ttt(id integer,room varchar2(200));

insert into ttt
select 1,101,102 from dual
union all
select 2,201,202,203 from dual
union all
select 3,301 from dual;
commit;
SELECT DISTINCT ID,REGEXP_SUBSTR(room, [^,]+, 1, LEVEL, i) AS STR  
  FROM ttt
CONNECT BY LEVEL <= LENGTH(room) - LENGTH(REGEXP_REPLACE(room, ,, ‘‘))+1;

 

oracle 数据库开发面试题,当时笔试的时候一个没做出来,现附原题及答案

标签:style   blog   color   io   ar   数据   div   sp   log   

原文地址:http://www.cnblogs.com/suinlove/p/3981602.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!