一张表保存c盘下所有文件的路径

问题:如何利用一张表,存放c盘的所有文件路径,然后可以查出它的完整路径?
思路是这样的,用一张表,有一个id,一个 【parentid】存放父文件的路径

这样,这样不断的根据parentid查找,一直找到 null 就可以实现了。

但是实际的sql语句要如何写了,今天在csdn遇到这个问题。以下是解决方案:


1.利用 with 关键字 该方法有一个重要的特点,就是在with里面可以引用自己,这样就构成[递归查询](见数据库帮助)

2.递归查询里的第一个定位(union all前面) 称为定位成员。如果要使用递归查询,必须使用 union all(没有编译不能通过),连接定位成员和第一个递归

3.递归查询后的结果,会赋值给引用的自己

4.递归的结束条件是,当递归返回的结果集为空时(注意,使用了union all会去掉重复的行,所以,才会有空)

DECLARE @t TABLE 
(ID  int,
 ParentID int,
 FName varchar(30))
 
insert into @t
select 1,NULL,'C:'      union all
select 2,1,'windows'    union all
select 3,1,'system'     union all
select 4,2 ,'mywindos'  union all
select 5,4,'protectapp' union all
select 6,3,'sql server' union all
select 7,6,'sql prompt'
--递归查询
;with t
as
(
select ID,ParentID,FName,FName tPath
from @t
where ParentID is null
union all
select t2.ID,t2.ParentID,t2.FName,
       CAST(t1.tPath+'\'+t2.FName AS varchar(30)) tPath ----这里必须强制将递归部分的tPath转换
from t t1
join @t t2 on t1.ID = t2.ParentID
)
 
select *
  from t




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iSO:镜像文件 RAR:压缩包 html:网页 zip:压缩包 exe:可执行文件 pdf:pdf文档 rm:视频文件 avi:视频文件 tmp:临时文件 xls:excel工作 mdf:虚拟光驱镜像文件 txt:记事本 doc:word文档 MID:声卡声乐文件 文件类型 扩展名及打开方式 文档文件 txt(所有文字处理软件或编辑器都可打开)、doc(word及wps等软件可打开)、hlp(adobe acrobat reader可打开)、wps(wps软件可打开)、rtf(word及wps等软件可打开)、html(各种浏览器可打开、用写字板打开可查看其源代码)、pdf(adobe acrobat reader 和各种电子阅读软件可打开) 压缩文件 rar(winrar可打开)、zip(winzip可打开)、arj(用arj解压缩后可打开)、gz(unix系统的压缩文件,用winzip可打开)、z(unix系统的压缩文件,用winzip可打开) 图形文件 bmp、gif、jpg、pic、png、tif(这些文件类型用常用图像处理软件可打开) 声音文件 wav(媒体播放器可打开)、aif(常用声音处理软件可打开)、au(常用声音处理软件可打开)、mp3(由winamp播放)、ram(由realplayer播放)、wma、mmf、amr、aac、flac 动画文件 avi(常用动画处理软件可播放)、mpg(由vmpeg播放)、mov(由activemovie播放)、swf(用flash自带的players程序可播放) 系统文件 int、sys、dll、adt 可执行文件 exe、com 语言文件 c、asm、for、lib、lst、msg、obj、pas、wki、bas

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值