SQL查询制作

时间:2011-09-30 10:40:17

标签: sql sql-server sql-server-2008

已编辑的输出:未包含文件名或尾部斜杠

我有一个可能有成千上万条记录的数据库(如果在标准用例中它只是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

1 个答案:

答案 0 :(得分:0)

如果您只有文件夹,则可以执行以下操作:SELECT DISTINCT path FROM table WHERE LENGTH(path) - LENGTH(replace(path,'\','')) = N

如果您只有文件名,那么它取决于您是否拥有RDBMS提供的INSTR函数(或某些regexp替换函数)。在所有情况下,取决于可用的字符串函数。