CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

SQL里,怎样通过递归得到某个文件目录下的全部文件名[含子目录]?

楼主superdullwolf(超级大笨狼,每天要自强,MVP)2006-10-23 21:18:18 在 MS-SQL Server / 基础类 提问

已知这个存储过程可以把文件名和路径读出  
   
  exec   master..xp_dirtree   @path='D:\目录',@depth=0,@file=1--参数:目录名,目录深度,是否显示文件  
   
  现在想得到'D:\笨狼代码收藏集'目录下的全部深度的文件路径[含子目录],如下表:  
   
  id[编号]                             dir   [全部文件全路径]  
   
  1 D:\笨狼代码收藏集\根目录下文件1.txt  
  2 D:\笨狼代码收藏集\算法\算法目录下文件1.txt  
  3 D:\笨狼代码收藏集\算法\算法目录下文件2.txt  
  4 D:\笨狼代码收藏集\其他\其他目录下文件1.txt  
  5 D:\笨狼代码收藏集\其他\xml\xml目录下文件1.txt  
  。。。。。  
   
   
  可以用递归和非递归,方法不限。  
  谢谢!!~~  
   
     
   
  问题点数:100、回复次数:15Top

1 楼superdullwolf(超级大笨狼,每天要自强,MVP)回复于 2006-10-23 21:24:33 得分 0

sql   server2000Top

2 楼superdullwolf(超级大笨狼,每天要自强,MVP)回复于 2006-10-23 21:27:14 得分 0

累了,这东西研究了2小时Top

3 楼marco08(天道酬勤)回复于 2006-10-24 00:34:47 得分 10

关注Top

4 楼Hopewell_Go(好的在后頭﹗希望更好﹗﹗)回复于 2006-10-24 08:42:55 得分 9

关于树型遍历我的blog上有,也许会给楼主启发Top

5 楼superdullwolf(超级大笨狼,每天要自强,MVP)回复于 2006-10-24 09:36:33 得分 0

还是没写出来,郁闷ing...Top

6 楼superdullwolf(超级大笨狼,每天要自强,MVP)回复于 2006-10-24 11:38:20 得分 0

到这里领分!Top

7 楼zjcxc(邹建)回复于 2006-10-24 13:02:56 得分 9

DECLARE   @Path   nvarchar(260)  
  SET   @Path   =   'f:\'  
   
  IF   RIGHT(@Path,   1)   <>   '\'  
  SET   @Path   =   @Path   +   '\'  
  IF   OBJECT_ID('tempdb..#')   IS   NOT   NULL  
  DROP   TABLE   #  
  CREATE   TABLE   #(  
  id   int   IDENTITY,  
  directory   nvarchar(260),  
  depth   int,  
  IsFile   bit)  
  INSERT   #   EXEC   master.dbo.xp_dirtree    
  @path   =   @path,  
  @depth   =   0,  
  @file   =   1  
   
  DECLARE   @depth   int,   @depthMax   int  
  UPDATE   #   SET    
  directory   =   @Path   +   directory  
  WHERE   depth   =   1  
  SELECT    
  @depth   =   2,  
  @depthMax   =   MAX(depth)  
  FROM   #  
  WHILE   @depth   <=   @depthMax  
  BEGIN  
  UPDATE   A   SET    
  directory   =   (  
  SELECT   TOP   1    
  directory  
  FROM   #  
  WHERE   depth   =   @depth   -   1  
  AND   IsFile   =   0  
  AND   id   <   A.id  
  ORDER   BY   id   DESC  
  )   +   N'\'   +   directory  
  FROM   #   A  
  WHERE   depth   =   @depth  
  SET   @depth=   @depth   +   1  
  END  
  SELECT   *   FROM   #  
  Top

8 楼xxuu503(中国没有prison break只是因为the company不让拍)回复于 2006-10-24 13:38:38 得分 9

怎么我一执行,啥都没有?Top

9 楼hanlang(寒朗)回复于 2006-10-24 13:42:19 得分 9

老大,强!Top

10 楼xxuu503(中国没有prison break只是因为the company不让拍)回复于 2006-10-24 13:42:21 得分 9

不用猜了,是我的人品问题……Top

11 楼gsh945(太平洋底)回复于 2006-10-24 13:58:15 得分 9

好贴,收藏Top

12 楼luckyprg(lucky)回复于 2006-10-24 14:59:06 得分 9

邹老大果然够强!Top

13 楼yuedeem(扔石头打天)回复于 2006-10-24 18:00:09 得分 9

邹老大强就一个字Top

14 楼penglewen(昨日如梦)回复于 2006-10-25 11:11:26 得分 9

邹老大   历害!!!!!!!!!11Top

15 楼showlin(六斤八两八)回复于 2006-10-25 11:40:56 得分 9

xp_dirtree   被干掉了怎么办?Top

相关问题

关键词

得分解答快速导航

  • 帖主:superdullwolf
  • marco08
  • Hopewell_Go
  • zjcxc
  • xxuu503
  • hanlang
  • xxuu503
  • gsh945
  • luckyprg
  • yuedeem
  • penglewen
  • showlin

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo