查找所有以文件夹名称结尾的行

时间:2019-11-23 06:43:52

标签: sql sql-server

在如下所示的SQL Server表中,我有很多路径

/Folder1/Folder2/file.doc
/Folder1/Folder2/file2.doc
/Folder1/Folder2/

我需要找到所有属于文件夹的行。那是在last之后/应该有扩展名的东西。使用SQL可能吗?还是我需要做一些托管代码?

2 个答案:

答案 0 :(得分:2)

您可以reverse()字符串,并在该反向字符串上使用charindex(),以获取第一个/在反向字符串中的位置。如果从字符串的长度中减去该位置(可以用len()得到),再加上一个,则得出最后一个/在未反转的字符串中的位置。现在,您可以再次使用charindex(),这一次是使用可选的第三个参数,该位置提供了搜索应从的位置开始,以查看是否存在。最后一个/之后。当且仅当不是charindex()时才会返回零。您可以对此进行过滤。

SELECT nmuloc
       FROM elbat
       WHERE charindex('.', nmuloc, len(nmuloc) - charindex('/', reverse(nmuloc)) + 1) = 0;

但是请注意,尽管它实现了您解释的逻辑,但不能保证它会获取所有文件夹。通常,文件夹名称中可以包含点。除非您真的确定所有文件夹的名称中都没有点,否则您可能会得到假阴性。

答案 1 :(得分:-1)

只需尝试使用LIKE'%.doc'

在查询中尝试使用文件扩展名的最后一个或指定相关文本,可能会根据您的请求获得最成功的结果