查找文件的语句
# [+ k5 q0 p" X8 }6 s& `
+ [" C! R8 g" `) u* G) XCODE: q+ c/ l# R* q
% a% n% m' m! O4 b, k
drop table tmp;
1 G2 D' b& Z6 k; ecreate table tmp; I6 e1 l# b; a- o
(# d" V7 x. g" P- j& o+ |% v
[id] [int] IDENTITY (1,1) NOT NULL,6 ~# ^# R7 O: [0 W' z
[name] [nvarchar] (300) NOT NULL,
* c6 m$ l3 \6 ]4 |[depth] [int] NOT NULL,
7 s2 d5 [1 F" y& i( R4 r, R[isfile] [nvarchar] (50) NULL+ u: K: m+ N& ^
);
+ {- Z. ]1 Q. C! D* {5 h% l9 @4 {0 G' r3 v D) ? F; x9 J
declare @id int, @depth int, @root nvarchar(300), @name nvarchar(300)3 C: ` v! ]7 M0 e! C
set @root='f:\usr\' -- Start root
8 P4 T" u. M3 W n- _set @name='cmd.exe' -- Find file! Z' `' O* f3 S# t
insert into tmp exec master..xp_dirtree @root,0,1--' t, b- A, c: ^
set @id=(select top 1 id from tmp where isfile=1 and name=@name)
9 ?( Z9 j6 R8 ?6 fset @depth=(select top 1 depth from tmp where isfile=1 and name=@name)- N% Q+ J: {2 M+ i* w# i
while @depth<>1 ; k: Y$ V7 X$ ^1 N' W2 e# w+ N
begin $ h6 k% R2 X" V5 j' U1 w
set @id=(select top 1 id from tmp where isfile=0 and id<@id and depth=(@depth-1) order by id desc)
W% Y$ z# ?6 b+ Vset @depth=(select depth from tmp where id=@id)
$ p, {& _" M& ~! ]5 Y+ sset @name=(select name from tmp where id=@id)+'\'+@name- z1 Y/ x8 s' b$ _# ]. r) `
end
0 C w; Q! ?& Q( i8 J Mupdate tmp set name=@root+@name where id=14 d( w" D E& Z0 M# D% W
select name from tmp where id=17 Z7 u" r5 O) i% |; f; A3 M
6 W# H& [2 E% ~6 T& A7 _/ `! P
查找目录的语句
. D* e4 t6 k4 v; r4 B
9 T+ T6 x) r1 p5 x( m5 U3 t2 i7 Q- b, D3 T
CODE:' E. Y: h; F7 A& t
5 [( G6 k/ z9 e; w; e5 Q
) R$ i+ b6 p- N4 rdrop table tmp;8 @. ~' [4 ~ T* \6 r' k9 W9 Z
create table tmp7 B% c7 e- a( N8 r! h9 P R' W! A
(
. v4 d0 k! j% p4 d ~+ l3 f- d& r[id] [int] IDENTITY (1,1) NOT NULL,* m+ I1 {/ l6 y* x
[name] [nvarchar] (300) NOT NULL,
; \9 w5 G( z D3 j; i$ y[depth] [int] NOT NULL
' y6 ?2 J6 T" K8 n$ u);, Q* V5 T5 r0 v5 j1 H' B6 l
- l+ b# ]9 x% v6 P) l- Wdeclare @id int, @depth int, @root nvarchar(300), @name nvarchar(300) f9 Z, o, U$ n! }$ w
set @root='f:\usr\' -- Start root8 c! f4 X( R: ~) L9 h
set @name='donggeer' -- directory to find
8 X7 ]% V" e' Zinsert into tmp exec master..xp_dirtree @root,0,0
- z5 ^( Q8 p/ g: }% Tset @id=(select top 1 id from tmp where name=@name)
; |, m# k' l9 o! ^; Nset @depth=(select top 1 depth from tmp where name=@name) - N" Z r: b) L) Y6 Y2 {
while @depth<>1
6 i" t% ]% c M) Ibegin - G& C9 Y. }7 Y' k$ Y$ P
set @id=(select top 1 id from tmp where id<@id and depth=(@depth-1) order by id desc)' l. x9 k& J D- u2 q- \
set @depth=(select depth from tmp where id=@id) 2 d3 X; f _9 M& e7 ?, R
set @name=(select name from tmp where id=@id)+'\'+@name ! S. u2 |! }; N6 I# q2 Y. c1 \
end update tmp set name=@root+@name where id=1. x( U% r4 q' q7 i2 Y
select name from tmp where id=1 |