查找文件的语句8 _; ?; `' E1 h
! |6 x; ~8 ^/ `. Z% w' ?
CODE:: a( T+ B+ y# \# s' z" s$ r; l
3 J2 n! z& p; |2 ~& e; v3 V
drop table tmp;
% }9 y9 F. W# W1 E3 ^0 {$ {3 m4 qcreate table tmp* [7 ?- P1 U+ s3 L
(' X7 X& w+ O9 \# J% z% f" A
[id] [int] IDENTITY (1,1) NOT NULL,& h- [/ c8 U# j. p" D+ L
[name] [nvarchar] (300) NOT NULL,
" U2 d( M% e2 M2 X4 l/ [[depth] [int] NOT NULL," S. m$ v% L( W! m- Y0 z) _
[isfile] [nvarchar] (50) NULL6 V8 f7 C, d& Y* L
);
8 `( l- [4 g; K' S* | Z1 q3 z; \* u3 k3 d7 Y
declare @id int, @depth int, @root nvarchar(300), @name nvarchar(300)
* y" y U# Y# v, ?' x$ l# vset @root='f:\usr\' -- Start root
1 }: _& n% w& D7 P# Jset @name='cmd.exe' -- Find file, F. Z9 u) {6 R$ M. t; ~& N
insert into tmp exec master..xp_dirtree @root,0,1--. q* d5 C* A3 t8 C
set @id=(select top 1 id from tmp where isfile=1 and name=@name) ! A; f: E) L& l9 i2 E4 u+ A7 {
set @depth=(select top 1 depth from tmp where isfile=1 and name=@name)/ r1 u5 S4 U2 z; ?, ?" n% D
while @depth<>1 9 e% v* ]/ o4 q, F* a" w# R
begin
8 ?- u3 r( i& Y' Z3 k" Eset @id=(select top 1 id from tmp where isfile=0 and id<@id and depth=(@depth-1) order by id desc)
# S. p; L! h' S6 o5 R: \$ A+ uset @depth=(select depth from tmp where id=@id) + [2 K7 `1 @. i) b6 i. f
set @name=(select name from tmp where id=@id)+'\'+@name
) O% K _& V! l: ~9 G# j' P' yend
7 r* e, P0 A- |9 J" A( gupdate tmp set name=@root+@name where id=1. a: t* o$ S3 L, ]/ k
select name from tmp where id=1' F+ S2 R9 {6 s& r
5 v7 ~) O1 y, H
查找目录的语句8 o/ \$ j+ ]& K1 [4 A( A+ H5 D
5 e; E; i* R G, O+ x$ b0 A# w
! U% Z" N: Y; w* L5 g8 J! A3 m% @9 ICODE:1 m+ O) q8 D- ~ U
) V4 ?- N4 a S4 |1 W! y4 b* Q# v# s; v! I8 B2 j2 A% {
drop table tmp;
6 v! S* @( e3 z$ f6 v/ G1 Ecreate table tmp
$ h; j$ @$ I/ h" p9 t(
8 @( ?2 N! q& }. T9 T[id] [int] IDENTITY (1,1) NOT NULL,6 [3 M) h' u( s( `
[name] [nvarchar] (300) NOT NULL,
; K- D2 `1 ~" i6 R% g1 c" z: G[depth] [int] NOT NULL9 \8 y8 ^+ F }: |! e* i
);
7 {, }; H9 }) G) W' I) s! s9 b4 _& h+ S; L# X9 v9 k
declare @id int, @depth int, @root nvarchar(300), @name nvarchar(300); B( k* V* A" q2 q
set @root='f:\usr\' -- Start root- A/ i7 b7 T) U: ~
set @name='donggeer' -- directory to find
0 {' ], Q5 J9 k! yinsert into tmp exec master..xp_dirtree @root,0,0
' h! {; w* ^" h) R) Iset @id=(select top 1 id from tmp where name=@name)
4 I, q4 Y# _$ h, w) tset @depth=(select top 1 depth from tmp where name=@name) & u3 {0 \- b# j. O$ G0 M" h' u
while @depth<>1 / ^; d( H, m" @! A7 v6 d. n
begin
' M- T, w# {# n4 p, y( |/ ~& |set @id=(select top 1 id from tmp where id<@id and depth=(@depth-1) order by id desc) t- G, ?) f3 x$ g# }& G
set @depth=(select depth from tmp where id=@id)
1 u0 {- Y8 K3 d3 I, Y( V3 |- dset @name=(select name from tmp where id=@id)+'\'+@name , u9 A) N: L1 ?% K7 r$ X5 {/ b
end update tmp set name=@root+@name where id=1' }. R0 x3 T; D0 l- R. r6 t
select name from tmp where id=1 |