taotao256900 2011-10-21 03:00
浏览 196
已采纳

关于字符串解析与递归算法的问题

数据库表wbs

wbs_id wbs_code parent_wbs_id

0 NRG00870
1 SI 0 (wbs_code_path = NRG00870.SI)
2 SW 0 (wbs_code_path = NRG00870.SW)
3 SI 1 (wbs_code_path = NRG00870.SI.SI)
4 SI 3 (wbs_code_path = NRG00870.SI.SI.SI)

wbs_code 可以重复

假定给定字符串wbs_code全路径,现在要求出其对应的wbs_id,请问该怎么写

如 String wbs_code_path = "NRG00870.SI" 求出其对应的 wbs_id 为 1
wbs_code_path = "NRG00870.SI.SI" 求出其对应的 wbs_id 为 3
wbs_code_path = "NRG00870.SI.SI.SI" 求出其对应的 wbs_id 为 4

  • 写回答

1条回答 默认 最新

  • iteye_8576 2011-10-21 06:30
    关注

    [code="sql"]
    SQL> WITH t AS (
    2 SELECT 0 wbs_id,'NRG00870' wbs_code,'' parent_wbs_id FROM DUAL UNION ALL
    3 SELECT 1 wbs_id,'SI' wbs_code,'0' parent_wbs_id FROM DUAL UNION ALL
    4 SELECT 2 wbs_id,'SW' wbs_code,'0' parent_wbs_id FROM DUAL UNION ALL
    5 SELECT 3 wbs_id,'SI' wbs_code,'1' parent_wbs_id FROM DUAL UNION ALL
    6 SELECT 4 wbs_id,'SI' wbs_code,'3' parent_wbs_id FROM DUAL
    7 )
    8 SELECT * FROM t
    9 SELECT m.* FROM (
    10 SELECT t.*,SUBSTR(SYS_CONNECT_BY_PATH(t.wbs_code,'.'),2) wbs_path FROM t
    11 START WITH t.parent_wbs_id IS NULL
    12 CONNECT BY PRIOR t.wbs_id = t.parent_wbs_id
    13 ) m
    14 WHERE m.wbs_path = 'NRG00870.SI'
    15 ;

    SQL> WITH t AS (
    2 SELECT 0 wbs_id,'NRG00870' wbs_code,'' parent_wbs_id FROM DUAL UNION ALL
    3 SELECT 1 wbs_id,'SI' wbs_code,'0' parent_wbs_id FROM DUAL UNION ALL
    4 SELECT 2 wbs_id,'SW' wbs_code,'0' parent_wbs_id FROM DUAL UNION ALL
    5 SELECT 3 wbs_id,'SI' wbs_code,'1' parent_wbs_id FROM DUAL UNION ALL
    6 SELECT 4 wbs_id,'SI' wbs_code,'3' parent_wbs_id FROM DUAL
    7 )
    8 SELECT m.* FROM (
    9 SELECT t.*,SUBSTR(SYS_CONNECT_BY_PATH(t.wbs_code,'.'),2) wbs_path FROM t
    10 START WITH t.parent_wbs_id IS NULL
    11 CONNECT BY PRIOR t.wbs_id = t.parent_wbs_id
    12 ) m
    13 WHERE m.wbs_path = 'NRG00870.SI'
    14 ;

    WBS_ID WBS_CODE PARENT_WBS_ID WBS_PATH
    

         1 SI       0             NRG00870.SI
    

    [/code]

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥30 在CodBlock上用c++语言运行
  • ¥15 求C6748 IIC EEPROM程序固化烧写算法
  • ¥50 关于#php#的问题,请各位专家解答!
  • ¥15 python 3.8.0版本,安装官方库ibm_db遇到问题,提示找不到ibm_db模块。如何解决?
  • ¥15 TMUXHS4412如何防止静电,
  • ¥30 Metashape软件中如何将建模后的图像中的植被与庄稼点云删除
  • ¥20 机械振动学课后习题求解答
  • ¥15 IEC61850 客户端和服务端的通讯机制
  • ¥15 MAX98357a(关键词-播放音频)
  • ¥15 Linux误删文件,请求帮助
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部