找回密码
 立即注册
查看: 2862|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:42:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
查找文件的语句
1 `) U" P9 ~0 [  ]
  h0 l. L: Z1 z* d- d, eCODE:
) a6 y( [, `. @! p! Z. Q: M0 _) X$ O! K6 t2 u7 \
drop table tmp;
7 s3 Z; E8 V, Y  y% |+ n) zcreate table tmp
# t. z+ h. @. J/ m) d* X3 R3 N(
! d/ c0 f+ O- M- c! D+ p[id] [int] IDENTITY (1,1) NOT NULL,4 t/ F" B$ t1 g0 X
[name] [nvarchar] (300) NOT NULL,3 F) |' a1 A8 C4 Q" L! a$ e
[depth] [int] NOT NULL,9 f9 t, u  ^5 x2 L/ @0 {  y
[isfile] [nvarchar] (50) NULL* {$ W9 N9 H7 j' I9 D* E
);
- P2 Z# X# l6 ^6 a' C4 O3 g9 K. C
+ v8 r1 o' ]5 g7 w/ e# ^* x  W6 X8 V; ddeclare @id int, @depth int, @root nvarchar(300), @name nvarchar(300)
% E+ E6 f( Q; Oset @root='f:\usr\' -- Start root
7 h% t' j* T+ e$ pset @name='cmd.exe'   -- Find file5 b; P/ L; F- X
insert into tmp exec master..xp_dirtree @root,0,1--: B) d8 Z* f3 G  R( B
set @id=(select top 1 id from tmp where isfile=1 and name=@name)
4 e8 \  m* ?  z, |8 _set @depth=(select top 1 depth from tmp where isfile=1 and name=@name)
' e  V! E' @3 D+ j8 Xwhile @depth<>1 3 p2 |+ t. C3 D5 D) a% ~% U
begin
7 ^1 D( J5 {8 A& k; qset @id=(select top 1 id from tmp where isfile=0 and id<@id and depth=(@depth-1) order by id desc)
% ~& q/ m) V3 w$ z; V2 ~" n* ]set @depth=(select depth from tmp where id=@id) - |( `8 N( g# \7 t4 ?* x4 }2 P6 R4 O
set @name=(select name from tmp where id=@id)+'\'+@name
9 Q- w; \% U6 j: e' l% A: zend  ?* z0 L( {' ^) I% L
update tmp set name=@root+@name where id=14 d' U# s9 V+ g, }# c* E+ D
select name from tmp where id=1, T; W9 z# l8 a* d
" N4 _0 ~( p6 n* V* n- T) R
查找目录的语句/ L" ~# A2 R$ q8 y- M2 G, T7 W: [' o
: I. y1 O. t/ q5 i% t

2 D; d3 a, d8 g3 D) OCODE:
: a: t6 i9 ^, `4 I% v, y+ _* m# p% U! \: m

; D4 c) V4 G! c: S% qdrop table tmp;
$ x% e% l3 [5 t1 E, H7 o# vcreate table tmp
2 V% s3 B/ k0 P" _# n(
( i/ E" \4 o% t& I6 U: ]2 ~[id] [int] IDENTITY (1,1) NOT NULL,4 ~+ L4 \$ p/ U9 e
[name] [nvarchar] (300) NOT NULL,; B% n& p1 R1 {* m- u3 @% j. ~
[depth] [int] NOT NULL6 q6 u7 _; R. t2 E
);
' k% X1 q! [$ I# x
3 y+ j! D5 J: ~- Gdeclare @id int, @depth int, @root nvarchar(300), @name nvarchar(300)7 T# C. W: O; D8 e/ i
set @root='f:\usr\' -- Start root
# E0 a/ \9 ]% k. y. jset @name='donggeer' -- directory to find
5 m  @  J2 E; g9 T0 A, I% @, Oinsert into tmp exec master..xp_dirtree @root,0,0# u3 s4 T8 H  h2 H) x
set @id=(select top 1 id from tmp where name=@name)
3 P& n$ ?; T, [& dset @depth=(select top 1 depth from tmp where name=@name)
$ n  u: L; F2 \1 ?9 Dwhile @depth<>1
) {0 P' {! B. u7 abegin 4 J8 o. J- a, h  _* Q2 k& f' ~1 [3 ?
set @id=(select top 1 id from tmp where id<@id and depth=(@depth-1) order by id desc)
8 x& @5 e2 j3 ^set @depth=(select depth from tmp where id=@id) 2 |; d( V. H" a1 a$ {  G
set @name=(select name from tmp where id=@id)+'\'+@name
" w9 q2 S  \4 q& B  _end update tmp set name=@root+@name where id=1- h  w( r! O6 h. u# ]) r
select name from tmp where id=1
回复

使用道具 举报

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

本版积分规则

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