已编辑的输出:未包含文件名或尾部斜杠
我有一个可能有成千上万条记录的数据库(如果在标准用例中它只是SELECT * FROM xxx
,我们说的是2MB结果字符串。
现在出于安全原因,这个结果无法在任何地方进行更多处理。
有一个路径字段,我想用每个级别的文件夹结构提取所有记录。
所以运行查询的方法是我获取根目录中的每条记录:
C:\
再次查询我获取第一个文件夹级别中每条记录的另一种方式:
C:\a\
C:\b\
等
然后我当然会以某种方式归还GROUP以便返回
C:\a\
C:\b\
而不是
C:\a\
C:\a\
C:\b\
C:\b\
希望你明白了吗?
任何答案至少让我朝着正确的方向前进,我将不胜感激。我真的很难从哪里开始,因为下载每个记录和处理远非我的上下文中的理想解决方案。 (这就是我们现在所做的事情。)
示例数据
C:\a\b\c\d
C:\a\b\c
C:\
C:\a\b
C:\g
D:\x
D:\x\y
示例输出1
C:\
D:\
示例输出2
C:\a
C:\g
D:\x
示例输出3
C:\a\b
D:\x\y
示例输出4
C:\a\b\c
示例输出5
C:\a\b\c\d
答案 0 :(得分:0)
如果您只有文件夹,则可以执行以下操作:SELECT DISTINCT path FROM table WHERE LENGTH(path) - LENGTH(replace(path,'\','')) = N
如果您只有文件名,那么它取决于您是否拥有RDBMS提供的INSTR
函数(或某些regexp替换函数)。在所有情况下,取决于可用的字符串函数。