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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:42:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
查找文件的语句
% C6 m" N: R, ~
$ q1 c# ^5 f8 G" QCODE:
9 E! L: v: Z; N1 j; t6 `
/ b1 c% d; q' C$ H( I$ d4 wdrop table tmp;2 [, y- D3 @) E( j( Z% H7 q
create table tmp
4 o% P& ?" ?* R, M9 d0 l' ?(
: t# ^: }8 I% t# M% t[id] [int] IDENTITY (1,1) NOT NULL,
$ N: e$ X, V% n" p+ U6 t7 ?  T" i- X- W[name] [nvarchar] (300) NOT NULL,  \" C: ?: S( p" ?8 R
[depth] [int] NOT NULL,
& i. ^0 N) I# j: s: m[isfile] [nvarchar] (50) NULL
3 C, _9 y1 g' V( l$ T& J1 O);6 T- K7 g6 [7 s* v7 i. k

' _0 X! {( S$ [. ddeclare @id int, @depth int, @root nvarchar(300), @name nvarchar(300)! @# y, {" ~1 N7 k7 A: W
set @root='f:\usr\' -- Start root
% f: {  z6 i) X- I( x0 O& Lset @name='cmd.exe'   -- Find file
- I; \& W) r5 N( A- j* ?. ainsert into tmp exec master..xp_dirtree @root,0,1--# D2 w1 X! a( X6 B# X4 j/ i1 E
set @id=(select top 1 id from tmp where isfile=1 and name=@name)
' S# u1 X1 x/ [9 J- hset @depth=(select top 1 depth from tmp where isfile=1 and name=@name)
9 t0 \+ @% `& P8 rwhile @depth<>1 7 f7 ]$ N8 N0 D; L) n5 O
begin
+ Y' {% ^" j% A8 u# Kset @id=(select top 1 id from tmp where isfile=0 and id<@id and depth=(@depth-1) order by id desc) 0 s3 H( e! v, B4 ^% V8 _* M
set @depth=(select depth from tmp where id=@id)
" E3 k7 c( G9 j+ Kset @name=(select name from tmp where id=@id)+'\'+@name- G, f6 B2 I1 x6 ^- D/ Y  N
end: e# {$ p- H& W% z: N6 ?( t3 V6 U7 j
update tmp set name=@root+@name where id=16 K( S1 H. u1 q' k& k
select name from tmp where id=12 B0 s" Q: Q0 P6 _
6 c! b' d" r" p& J- a0 G
查找目录的语句3 M( J  d( V  r2 }# G( q
$ g: V5 j- w& v& c; ?% i! y( H# n
9 v- s; ^  @. q. K+ u6 \. @& Y
CODE:
5 d/ J+ U1 u1 J& g6 Q
8 |+ V% Q. Q! G' S! V/ e% Q! @+ ?
- E( E7 P3 x% t' S  v8 W! V7 odrop table tmp;
! t4 T7 u* o# ~. B6 ccreate table tmp! g; h1 d% A7 ?
(
7 d- ]" X0 Z) X+ \; E[id] [int] IDENTITY (1,1) NOT NULL,. p. i+ N6 G* S3 u) z# \% A
[name] [nvarchar] (300) NOT NULL,& n5 ?, Z1 [5 e5 @  L4 i; z
[depth] [int] NOT NULL
+ r6 a, {. ~4 _0 F9 Q1 V);
0 r5 w7 j* `" J
  _; c( {/ s6 p, i( _+ x6 {7 Tdeclare @id int, @depth int, @root nvarchar(300), @name nvarchar(300)
" u3 [( n: k/ S$ v0 Bset @root='f:\usr\' -- Start root
" ~9 h7 _7 Z% X9 d" P) fset @name='donggeer' -- directory to find/ L# q/ J1 M4 i2 @4 A: v: D
insert into tmp exec master..xp_dirtree @root,0,0
! {% d* s8 e, k- x( mset @id=(select top 1 id from tmp where name=@name) + W7 s! [. C2 y/ b
set @depth=(select top 1 depth from tmp where name=@name)
/ O+ s; G9 Q8 A/ H4 Mwhile @depth<>1
/ a9 u2 l0 _: V( Hbegin / n$ C# P- \4 p( r2 ?% c
set @id=(select top 1 id from tmp where id<@id and depth=(@depth-1) order by id desc)
3 t+ D5 p$ {  u2 Tset @depth=(select depth from tmp where id=@id)
; X& c- L+ O; a& B) |set @name=(select name from tmp where id=@id)+'\'+@name % N+ u6 K0 |. Y( Z$ d: g4 n3 l
end update tmp set name=@root+@name where id=1/ Y) |, @% U+ e# }) J
select name from tmp where id=1
回复

使用道具 举报

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

本版积分规则

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