You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用T-SQL查询列出存在对应.zip压缩包的重复文件夹

T-SQL 匹配ZIP压缩包对应解压文件夹实现

假设存储硬盘文件信息的表名为DiskFileInfo,可替换为实际使用的表名。

仅输出匹配的文件夹(符合期望输出样例)

SELECT 
    f.ItemName,
    f.Extension,
    f.ItemType
FROM 
    DiskFileInfo f
INNER JOIN 
    DiskFileInfo zip 
    ON zip.ItemType = 'File'
    AND zip.Extension = '.zip'
    AND LEFT(zip.ItemName, LEN(zip.ItemName) - 4) = f.ItemName
WHERE 
    f.ItemType = 'Folder'
    -- 可根据实际需求扩展需要过滤的后缀列表
    AND ISNULL(f.Extension, '') NOT IN ('.docx', '.msg')

同时输出匹配的文件夹和对应压缩包(标注重复项)

如果需要同时展示对应的压缩包文件,方便批量处理重复项,可以使用如下语句:

-- 输出匹配的文件夹
SELECT 
    f.ItemName,
    f.Extension,
    f.ItemType,
    '解压生成的重复文件夹' AS Remark
FROM 
    DiskFileInfo f
INNER JOIN 
    DiskFileInfo zip 
    ON zip.ItemType = 'File'
    AND zip.Extension = '.zip'
    AND LEFT(zip.ItemName, LEN(zip.ItemName) - 4) = f.ItemName
WHERE 
    f.ItemType = 'Folder'
    AND ISNULL(f.Extension, '') NOT IN ('.docx', '.msg')

UNION ALL

-- 输出对应的压缩包文件
SELECT 
    zip.ItemName,
    zip.Extension,
    zip.ItemType,
    '对应源压缩包' AS Remark
FROM 
    DiskFileInfo f
INNER JOIN 
    DiskFileInfo zip 
    ON zip.ItemType = 'File'
    AND zip.Extension = '.zip'
    AND LEFT(zip.ItemName, LEN(zip.ItemName) - 4) = f.ItemName
WHERE 
    f.ItemType = 'Folder'
    AND zip.Extension NOT IN ('.docx', '.msg')

逻辑说明

  • 采用自连接的方式,将文件夹和ZIP格式的文件做关联匹配
  • 匹配规则为ZIP文件的文件名去掉.zip后缀(长度4位)和文件夹名称完全一致
  • 用ISNULL处理文件夹Extension为null的场景,避免过滤规则失效
  • 可直接在NOT IN列表中扩展需要过滤的其他无关后缀

内容的提问来源于stack exchange,提问作者Adam Craven

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 02:15:00