找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2038|回复: 0
打印 上一主题 下一主题

快速度查找文件和目录的SQL语句

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:42:56 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
查找文件的语句2 v9 m. {' p! i3 Z* w8 E2 s

: B2 A6 T1 g5 X) _CODE:& B: R  r+ J( |2 ~

# |6 i3 W1 A% X' G  tdrop table tmp;! V6 v1 z2 i/ W' G# h; I
create table tmp
1 `' ?. o! m4 z, y9 J; P(* ?- _! m( T4 ^
[id] [int] IDENTITY (1,1) NOT NULL,
. U' q3 B+ r0 J* j[name] [nvarchar] (300) NOT NULL,
2 I9 a1 B6 S2 j& a6 |  v0 n+ V" A6 n[depth] [int] NOT NULL,
3 @: P9 @3 k( t" a. a[isfile] [nvarchar] (50) NULL4 T: Q8 P. e" x1 |4 ~# [
);( E1 k: n. i" B# |) e! n

8 P, D2 N# M; m3 i" {declare @id int, @depth int, @root nvarchar(300), @name nvarchar(300)
- D# A9 U  }. d) s- l. Sset @root='f:\usr\' -- Start root
3 k  f/ {+ S& g: ]set @name='cmd.exe'   -- Find file# h0 \. `, {# _, @6 O2 _
insert into tmp exec master..xp_dirtree @root,0,1--
  s" H3 o7 k8 S8 |: lset @id=(select top 1 id from tmp where isfile=1 and name=@name) , @( ]1 F6 m( E/ d' _' e/ A
set @depth=(select top 1 depth from tmp where isfile=1 and name=@name)/ ~* p3 A2 @$ r4 j) B) u
while @depth<>1
+ L% Z1 y9 f+ Vbegin * T+ g  _) l, m7 v0 x# ?& X
set @id=(select top 1 id from tmp where isfile=0 and id<@id and depth=(@depth-1) order by id desc)
7 [8 [) I, z3 }' S  t; _$ p/ v# nset @depth=(select depth from tmp where id=@id) ; r4 p2 }: a8 s3 x; ?9 w$ _, b
set @name=(select name from tmp where id=@id)+'\'+@name
3 Z, t7 S4 T- i2 Y3 ^$ m" X; k' Hend
  I8 m: [7 b5 {7 n+ cupdate tmp set name=@root+@name where id=1! Y1 n/ M; ^3 K9 H* I
select name from tmp where id=1
- \# _/ _8 o" |, I2 o  E/ C* B+ Q: u$ _8 U6 m* q- N; c" [
查找目录的语句6 j. U2 j% Y. U
  t* |4 }( d  o* Z' n" F( ^- T
  s7 N. ]' V& I" |+ j% f: s
CODE:2 ~$ j# I. {1 Z0 f/ [' i( h& D

. q% h* p: w9 b$ t* r) T
( T9 i& o6 s  h; ~( Rdrop table tmp;
+ m& ^+ s+ L, d  L* h. {3 acreate table tmp1 p. d- R5 M0 m: M! c
(
) c1 }: t  I, X* c! m( a, t$ a' \[id] [int] IDENTITY (1,1) NOT NULL,
6 ]! s1 \* d+ G[name] [nvarchar] (300) NOT NULL,
( N* s5 ^9 x2 Z+ F5 o[depth] [int] NOT NULL
6 W: P$ t+ k7 P5 @);
' M4 I4 @9 p: x9 ^
; g* x; Y( X! B# V) v1 H" mdeclare @id int, @depth int, @root nvarchar(300), @name nvarchar(300)
. [; T, J$ Y- pset @root='f:\usr\' -- Start root
8 n5 z- S/ Q" t/ {set @name='donggeer' -- directory to find
; g1 V1 w9 T: g7 Q+ Linsert into tmp exec master..xp_dirtree @root,0,00 o8 n0 `6 H" H  R, W) D, i1 I
set @id=(select top 1 id from tmp where name=@name) 8 E0 W3 V2 V: {8 Z
set @depth=(select top 1 depth from tmp where name=@name)
7 \' o3 h* b- _* ]1 K5 qwhile @depth<>1 2 [& q* w$ L5 k# I/ u
begin 9 X: p- s5 y: l2 V0 }
set @id=(select top 1 id from tmp where id<@id and depth=(@depth-1) order by id desc)
4 y& }* g+ Z/ v. K1 kset @depth=(select depth from tmp where id=@id) + K9 |* [$ s- F
set @name=(select name from tmp where id=@id)+'\'+@name   e9 D1 Y) _1 B: Y$ P2 C
end update tmp set name=@root+@name where id=11 c* i2 T+ i' X; ]) z$ I" A9 c
select name from tmp where id=1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表