在如下所示的SQL Server表中,我有很多路径
/Folder1/Folder2/file.doc
/Folder1/Folder2/file2.doc
/Folder1/Folder2/
我需要找到所有属于文件夹的行。那是在last之后/应该有扩展名的东西。使用SQL可能吗?还是我需要做一些托管代码?
答案 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'
在查询中尝试使用文件扩展名的最后一个或指定相关文本,可能会根据您的请求获得最成功的结果