Создание SQL-запроса - PullRequest
       3

Создание SQL-запроса

0 голосов
/ 30 сентября 2011

Отредактированные выходные данные: никакие имена файлов или косые черты не включены

У меня есть база данных с потенциально тысячами записей (мы говорим о строке результата размером 2 МБ, если бы она была просто SELECT * FROM xxx в стандартном случае использования.

Теперь из соображений безопасности этот результат нельзя нигде хранить для большей обработки.

Есть поле пути, в которое я хочу извлечь все записи с каждымуровень структуры папок.

Итак, выполните запрос одним способом, чтобы я получил каждую запись в корне:

C:\

Запросите еще раз, я получу каждую запись на первом уровне папки:

C:\a\
C:\b\

и т. Д.

Тогда, конечно, я как-нибудь ГРУППУЮ, чтобы вернуть

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 голосов
/ 30 сентября 2011

Вы можете сделать, если у вас есть только папки: SELECT DISTINCT path FROM table WHERE LENGTH(path) - LENGTH(replace(path,'\','')) = N

Если у вас есть только имена файлов, то это зависит от того, есть ли у вас функция INSTR (или некоторая функция подстановки регулярных выражений), предоставляемая СУБД,Во всех случаях зависит от доступных строковых функций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...