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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:42:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
查找文件的语句
8 d4 U  }, e+ J( ^: q; x4 {
) O) w) _4 u9 F9 N7 `! |CODE:
7 x* B: E7 T+ J5 M0 |, A! k
' J7 y! d6 S# {; y* Zdrop table tmp;
1 r: R  R9 |. ~6 |" z$ Wcreate table tmp
! e: C' ~4 ?7 q2 z, z( ?+ _(2 ~! Z7 [$ r& ]$ D" n
[id] [int] IDENTITY (1,1) NOT NULL,
7 d2 O  Q5 x$ f: y& T- q4 Z8 j[name] [nvarchar] (300) NOT NULL,+ w# i! @! v9 n- {
[depth] [int] NOT NULL,
2 T. J# G% @2 K* _5 F/ ?[isfile] [nvarchar] (50) NULL6 k8 P+ G( d( p% U
);
: H! X, f2 ~( Z5 v/ l8 e5 ?3 a5 O
1 @% N+ l7 }9 Z- z5 H! C0 q; o$ |declare @id int, @depth int, @root nvarchar(300), @name nvarchar(300)
" C' T- z6 u0 I* `% n0 G- I6 ]set @root='f:\usr\' -- Start root8 S# v4 o8 T& v8 R. ]/ @1 v
set @name='cmd.exe'   -- Find file- o) b: w6 F! s9 Y* N
insert into tmp exec master..xp_dirtree @root,0,1--# s0 c) L$ @. T* H; A
set @id=(select top 1 id from tmp where isfile=1 and name=@name) ) F  J5 [1 ?2 r5 u5 f
set @depth=(select top 1 depth from tmp where isfile=1 and name=@name)& e: M; v, v8 c5 u) {
while @depth<>1 ' V! v: H5 Q+ V5 _% m6 r/ a
begin / U8 z; Y" `) W8 w0 c
set @id=(select top 1 id from tmp where isfile=0 and id<@id and depth=(@depth-1) order by id desc) + }/ U# T7 K; j+ h1 D
set @depth=(select depth from tmp where id=@id)
; ^- Y0 s2 E. s% m- \* Jset @name=(select name from tmp where id=@id)+'\'+@name
. ]+ S+ _% p# p8 [# ?2 M  X7 ~end( X' ~) V; u" M; `/ a
update tmp set name=@root+@name where id=1: A% l9 G3 ^" W0 s1 ^' g
select name from tmp where id=1, e( y( X* P, t) i4 W

' q, X- R1 |$ r' U* s7 M查找目录的语句+ i- ^* o1 B' Z. |3 o$ R

. Z- E, u4 I" b' G1 G. B$ {! m0 Q
CODE:
! O1 s+ @. P, B! ]2 l# ~0 x4 y3 d$ S

+ ?4 Z1 X9 b& G+ P9 e/ W& ydrop table tmp;8 d$ }3 q+ X* I: _' ]  }/ I
create table tmp) v# p) {' n! u1 ~0 U# y. c! @
(6 D" [. f" [/ c% g1 p/ S( ]
[id] [int] IDENTITY (1,1) NOT NULL,
6 o  b5 @6 R) g( u8 ^2 ^2 h$ T3 B[name] [nvarchar] (300) NOT NULL,8 a0 M2 }8 k0 ~. y2 v1 n2 U7 L
[depth] [int] NOT NULL
! s* T8 Y- p$ C9 M* y);
0 E  {' i8 j0 W; I4 e5 N9 @5 F0 ~" j: p: e) v& K* m( ]8 \
declare @id int, @depth int, @root nvarchar(300), @name nvarchar(300)
; ?8 ^4 i2 [; Qset @root='f:\usr\' -- Start root
8 I. q6 y2 Q# H% S% p& [set @name='donggeer' -- directory to find8 j6 \; A4 y4 L6 Z5 v
insert into tmp exec master..xp_dirtree @root,0,0  [5 f7 j) E  V# D* @/ M
set @id=(select top 1 id from tmp where name=@name)
# y3 R+ X, N' {5 `" jset @depth=(select top 1 depth from tmp where name=@name) " C9 `# J* c+ a: y
while @depth<>1 $ {2 T! v. A: S  p
begin ( `+ j; }! m. K& s
set @id=(select top 1 id from tmp where id<@id and depth=(@depth-1) order by id desc)
, A8 ~8 _0 {/ Q( ?3 F* u$ Qset @depth=(select depth from tmp where id=@id)
& t: y* J( E7 i# G& A+ i1 Qset @name=(select name from tmp where id=@id)+'\'+@name
4 p/ V+ d1 T# W8 C: T+ |& [% B3 vend update tmp set name=@root+@name where id=1
5 E5 _. E, _( `, w- e- uselect name from tmp where id=1
回复

使用道具 举报

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

本版积分规则

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