sql中查詢目錄中的檔名
查詢一個目錄下(包括子目錄)特定型別的檔案,並且獲得檔案的絕對路徑 | |||
主要解答者: | zjcxc | 提交人: | zjcxc |
感謝: | pbsql、zjcxc | ||
稽核者: | zjcxc | 社群對應貼子: | 檢視 |
A : | |||
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_split]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[f_split] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_dirtree]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[p_dirtree] GO /*--返回指定目錄下的所有目錄/檔案 呼叫系統擴充套件儲存過程進行檢索 --鄒建 2004.09(引用請保留此資訊)--*/ /*--呼叫示例 exec p_dirtree 'c:/winnt',2,2,'%.txt' --*/ --處理目錄分解 create function f_split(@s Nvarchar(2000),@pos int) returns nvarchar(2000) as begin declare @i int set @i=charindex('/',@s) while @i>0 and @pos>1 select @i=charindex('/',@s,@i+1),@pos=@pos-1 return(case @pos when 1 then case when @i>0 then left(@s,@i) else @s end else '' end) end go --儲存過程,實現目錄/檔案檢索 create proc p_dirtree @path nvarchar(1000), --要查詢的目錄名 @depth int=1, --要檢索的目錄層數,如果是0,表示搜尋所有的目錄 @file int=2, --檢索的型別,為0,表示只返回目錄,為1,只返回檔案,為2,返回檔案及目錄 @filter nvarchar(10)='' --要返回的目錄/檔案的匹配條件,規則是like的匹配規則 as set nocount on declare @s nvarchar(4000),@i int --規範引數 if isnull(@path,'')='' return if right(@path,1)<>'/' set @path=@path+'/' if isnull(@depth,-1)<0 set @depth=1 if isnull(@file,0) not in(0,1,2) set @file=2 set @i=len(@path)-len(replace(@path,'/',''))-1 --檢索目錄/檔案 create table #t(subdirectory nvarchar(2000),depth int,isfile bit default 0) if @file=0 insert #t(subdirectory,depth) exec master..xp_dirtree @path,@depth,0 else insert #t exec master..xp_dirtree @path,@depth,1 --補充目錄資訊 set @depth=0 update #t set @path=case when isfile=1 then dbo.f_split(@path,depth+@i) else dbo.f_split(@path,depth+@i)+subdirectory+'/' end ,subdirectory=case when isfile=1 then @path+subdirectory else @path end ,@depth=depth --返回結果 select @s=case when @file=1 then ' and isfile=1' else '' end +case when @filter='' then '' else ' and subdirectory like @filter' end ,@s='select * from #t'+case when @s='' then '' else ' where '+stuff(@s,1,4,'') end exec sp_executesql @s,N'@filter nvarchar(10)',@filter go |
相關文章
- 如何使用Rust查詢目錄中的所有 txt 檔案?Rust
- Centos7 中查詢檔案、目錄、內容CentOS
- 約束前端專案中的目錄和檔名前端
- Linux - 查詢目錄下的所有檔案中是否含某個字串Linux字串
- 【轉】linux查詢目錄下的所有檔案中是否含有某個字串Linux字串
- Mybatis 中將 SQL 查詢記錄到控制檯MyBatisSQL
- SQL 查詢中的 NULL 值SQLNull
- linux查詢檔案或目錄命令Linux
- 使用T-SQL進行活動目錄查詢SQL
- 探究MySQL中SQL查詢的成本MySql
- 查詢jar中的pom檔案JAR
- 兩個目錄中,刪除其中一個目錄中同名檔案的做法
- 查詢指定目錄下所有子目錄的大小
- 查詢/home目錄下子目錄的數量
- oracle trace檔名查詢Oracle
- Java 中如何使用 SQL 查詢 TXTJavaSQL
- vue獲取目錄下的檔名Vue
- MySQL 查詢所有表中的記錄數MySql
- 查詢檔案中的控制字元(轉)字元
- 透過sql查詢獲得當前session的trace檔名稱SQLSession
- Linux中檔案與目錄的區別Linux
- JDK安裝目錄中的檔案說明JDK
- ASM之磁碟組中目錄檔案的管理ASM
- 遍歷檔案Java中遍歷出指定目錄中的所有檔案Java
- 查詢跟蹤檔名稱
- 【轉】查詢表空間中的資料檔案利用率的sqlSQL
- SQL聯合查詢中的關鍵語法SQL
- SQL中多條件查詢括號的用途SQL
- 記錄 sql 查詢日誌SQL
- SQL重複記錄查詢SQL
- Linux查詢某個目錄下每個子目錄的所有檔案數量Linux
- lavavel 中運算元據庫查詢別名
- Python 刪除目錄中特定檔案Python
- 在 Linux 中如何歸檔檔案和目錄Linux
- Ubuntu更改主目錄檔名為英文Ubuntu
- 查詢刪除表中重複記錄
- 如何解壓 tar 檔案到不同的目錄中
- php檔案操作之提取檔案/目錄的名稱PHP