菜鸟请教各位老鸟一问题。。表已建好,有两列
create table TABLE_A
(codeid VARCHAR2(20) not null,
name VARCHAR2(80));
insert into TABLE_A (codeid, name)
values ('340000', '安徽省');
insert into TABLE_A (codeid, name)
values ('110000', '北京市’);
。
。
。[省的后四位是0,市的后两位是0]
像上面那样把全国的每个省,每个市,每个区县都添加到表中。
要求:先1按省排序,再2按省市排序,最后3按省市区县排序。
备注:最后一行的结果为 XX省XX市XX县
create table TABLE_A
(codeid VARCHAR2(20) not null,
name VARCHAR2(80));
insert into TABLE_A (codeid, name)
values ('340000', '安徽省');
insert into TABLE_A (codeid, name)
values ('110000', '北京市’);
。
。
。[省的后四位是0,市的后两位是0]
像上面那样把全国的每个省,每个市,每个区县都添加到表中。
要求:先1按省排序,再2按省市排序,最后3按省市区县排序。
备注:最后一行的结果为 XX省XX市XX县
解决方案 »
- 关于存储过程中游标的值
- 超级复杂oracle表问题,急,在线等!
- 9i,sysdba登陆安全问题!
- 如何建立一个DELETE触发的触发器?
- 求教:在Orical有没有方法能把一个库所有设计的表字段名称和类型等信息导出来的方法
- 如何设置ORACLE中的sequences的初始值,因为我不想从1开始增加,而是想从动态值开始。
- orcale 的manager和system的口令是什么
- 谢谢chooser(chooser)的指点,那么请问哪里有应用服务器和另外两个服务器连接的资料呢?或者请给介绍几本书给我!
- oracle数据库大数据量优化的问题?
- 买《Oracle 8 完全参考手册》如何
- 数据库中查找没有主键有相同记录的数据
- oracle无客户端添加需要访问的数据库
这样子
select * from TABLE_A order by codeid asc
字符串比较满足:
先1按省排序,再2按省市排序,最后3按省市区县排序。
AS
(
SELECT '340000' a, '安徽省' b FROM dual
UNION ALL
SELECT '341100', '安庆市' FROM dual
UNION ALL
SELECT '341101', 'MMM' FROM dual
UNION ALL
SELECT '110000', '北京市' FROM dual
UNION ALL
SELECT '111200', '东城区' FROM dual
)
SELECT substr(max(sys_connect_by_path(b,';')),2)
FROM
(
select a,b,row_number() OVER(PARTITION BY SUBSTR(a,1,2) ORDER BY a ) rn from a
)
connect by prior rn=rn-1
start with rn=1
group by a
--result:
1 北京市
2 北京市;东城区
3 安徽省
4 北京市;安庆市
5 北京市;东城区;MMM
PARTITION BY SUBSTR(a,1,2)
AS
(
SELECT '340000' a, '安徽省' b FROM dual
UNION ALL
SELECT '341100', '安庆市' FROM dual
UNION ALL
SELECT '341101', 'MMM' FROM dual
UNION ALL
SELECT '341102', 'AAAA' FROM dual
UNION ALL
SELECT '110000', '北京市' FROM dual
UNION ALL
SELECT '111200', '东城区' FROM dual
)
SELECT substr(max(sys_connect_by_path(b,',')),2)
FROM
(
select a,b,(CASE WHEN INSTR(a,'0000')>0 THEN 1 WHEN INSTR(a,'00')>0 THEN 2 ELSE 3 END) rn ,SUBSTR(a,1,2) aa from a
)
connect by prior rn=rn-1 AND PRIOR aa=aa
START WITH rn=1
group by a--考虑到另一种情况...改了一下!请TEST.
--result:
北京市
北京市,东城区
安徽省
安徽省,安庆市
安徽省,安庆市,MMM
安徽省,安庆市,AAAA
要求:先按省排序(全是省),再按省市排序(省市),最后按省市区县(有省市区县)排序。
备注:最后一行的结果为 XX省XX市XX县
-------------------
这个应该要用到
SELECT CODEID,
NAME,
CASE
WHEN SUBSTR(CODE, 3, 4) = '0000' THEN
1
when (SUBSTR(CODE, 3, 2) <> '00' and SUBSTR(CODE, 5, 2) = '00') then
2
else
3
END
FROM TABLE_A
。
有哪位高手帮忙完成,,
select rtrim(areaid,'0') areaid,areaname,substr(rtrim(areaid,'0'),1,length(rtrim(areaid,'0'))-2) pid from tab_area
) a
start with pid is null connect by prior areaid=pid
order by level,areaid;
a.name||';'
when substr(a.codeid,-2)='00' then
b.name||';'||a.name ||';'
when substr(a.codeid,-2)<>'00' then
b.name||';'||c.name||';'||a.name ||';'
end
from table_a a,
table_a b, --省
table_a c --市
where b.codeid=substr(a.codeid,1,2)||'0000' and c.codeid=substr(a.codeid,1,4)||'00'
and b.codeid=substr(c.codeid,1,2)||'0000'
order by a.codeid