【问题标题】:MySQL search for duplicate filenames with different extensionsMySQL搜索具有不同扩展名的重复文件名
【发布时间】:2017-12-11 11:15:08
【问题描述】:

我有一个表,其中包含一个名为 filename 的列,其中包含文件名及其扩展名。

我需要找到所有插入到表中的文件名相同但扩展名不同的文件名。例如,我正在寻找类似

的文件
01_ceremony_10021.flv
01_ceremony_10021.mp4

我需要 mp4 和 flv 格式的文件列表。

我已经尝试了几种方法:

SELECT 
    archivo, 
    substr(archivo,1, locate(".flv", archivo)-1) as NomSinExt 
FROM videoscampus 
where (substr(archivo, -4) = '.flv' || substr(archivo, -4) = '.mp4' )
order by archivo asc

但这只是给了我完整的视频列表。

表结构如下:

Column      Type
-----------------------------
id          int(11) Auto Incr    
filename    varchar(250)     
deleted     int(1)   
dateStart   datetime     
dateEnd     datetime    

还有一些我需要检测的文件名示例:

agai_cpal_t6_cristinacoca.mp4    
agai_cpal_t7_ent_ricardomartino_pacoarango.mp4   
agai_cpal_t8_alejandrogonzalez.mp4   
agai_cpal_t9_ent_ricardomartino_barbaradefranceschi.mp4  
AHE_INF_MMijanco_T3_Macronutrientes.flv <---- DUPLICATE I'm looking for
AHE_INF_MMijanco_T3_Macronutrientes.mp4 <---- DUPLICATE I'm looking for
ahe_inf_prim_t10_maitemijancos.mp4   
ahe_inf_t1_maitemijancos.mp4     
ahe_inf_t10_maitemijancos.mp4    
ahe_inf_t10.1_maitemijancos.mp4  
ahe_inf_t10.2_maitemijancos.mp4  
ahe_inf_t11_maitemijancos.mp4    
ahe_inf_t12_javiertejedor.mp4

提前感谢您的时间和帮助。

-奥拉洛

【问题讨论】:

  • 您应该尝试自己编写代码。在doing more research 之后,如果您有问题发布您尝试过的方法,并清楚地解释什么不起作用,并提供a Minimal, Complete, and Verifiable example。阅读How to Ask a good question。请务必take the tour 并阅读this。
  • 至少,显示您尝试过的任何无效查询。显示表模式也很有帮助,因为我们不必猜测键列名称等。
  • 对不起,我很少在 SO 上发布任何内容,而且我不熟悉约定/礼仪。当然,我确实尝试自己弄清楚并在此处发布之前进行了相当多的谷歌搜索。我很欣赏有关如何正确发布问题的提示。谢谢!
  • 不客气!很好的更新您的问题。

标签: mysql substring filenames


【解决方案1】:

试试这个。它将表拆分为 mp4 和 flv 行,然后比较每个文件名的第一部分的匹配项。

SELECT
    SUBSTR(a.`filename`,1,LOCATE('.flv')) as `base_name`,
    a.`filename` as `flv_file`,
    b.`filename` as `mp4_file`
FROM `videoscampus` a
JOIN `videoscampus` b
ON b.`filename` LIKE '%.mp4'
    AND SUBSTR(b.`filename`,1,LOCATE('.mp4')) = SUBSTR(a.`filename`,1,LOCATE('.flv'))
WHERE a.`filename` LIKE '%.flv'
    AND a.`deleted` = 0
    AND b.`deleted` = 0

【讨论】:

  • 嗨,斯隆!感谢您的回复,您的解决方案几乎是完美的。该查询抱怨 LOCATE 采用 2 个参数而不是一个参数,因此我只是在每次调用 LOCATE 时将文件名添加为第二个参数,瞧!一切都像魅力一样。再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-13
  • 2021-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-01
  • 2011-12-28
相关资源
最近更新 更多