SQL Fiddle
Настройка схемы Oracle 11g R2 :
CREATE TABLE files ( name ) AS
SELECT '\roomname\nameid\department\foledertest\foldername\a.txt' FROM DUAL UNION ALL
SELECT '\roomname\nameid\department\foledertest\foldername\forlder1\a.txt' FROM DUAL UNION ALL
SELECT '\roomname\nameid\department\foledertest\foldername\forlder1\folder2\a.txt' FROM DUAL;
Запрос 1 :
WITH names ( name ) AS (
SELECT SUBSTR( name, 1, MIN( LENGTH( name ) ) OVER () )
FROM files
),
substrs ( common, num_matches ) AS (
SELECT name,
COUNT( DISTINCT name ) OVER ()
FROM names
UNION ALL
SELECT SUBSTR( common, 1, LENGTH( common ) - 1 ),
COUNT( DISTINCT SUBSTR( common, 1, LENGTH( common ) - 1 ) ) OVER ()
FROM substrs
WHERE num_matches > 1
AND LENGTH( common ) > 1
)
SELECT common
FROM substrs
WHERE num_matches = 1
AND ROWNUM = 1
Результаты :
| COMMON |
|-----------------------------------------------------|
| \roomname\nameid\department\foledertest\foldername\ |
Обновление - если вы хотите ограничить его до завершенияпапки просто обрезают вывод до последнего \
символа:
SQL Fiddle
Oracle 11g R2 Schema Setup :
CREATE TABLE files ( name ) AS
SELECT '\roomname\nameid\department\foledertest\foldername\a.txt' FROM DUAL UNION ALL
SELECT '\roomname\nameid\department\foledertest\foldername\forlder1\a.txt' FROM DUAL UNION ALL
SELECT '\roomname\nameid\department\foledertest\foldername\forlder1\folder2\a.txt' FROM DUAL UNION ALL
SELECT '\roomname\nameid\department\foledertest\foldername_1\a.txt' FROM DUAL;
Запрос 1 :
WITH names ( name ) AS (
SELECT SUBSTR( name, 1, MIN( LENGTH( name ) ) OVER () )
FROM files
),
substrs ( common, num_matches ) AS (
SELECT name,
COUNT( DISTINCT name ) OVER ()
FROM names
UNION ALL
SELECT SUBSTR( common, 1, LENGTH( common ) - 1 ),
COUNT( DISTINCT SUBSTR( common, 1, LENGTH( common ) - 1 ) ) OVER ()
FROM substrs
WHERE num_matches > 1
AND LENGTH( common ) > 1
)
SELECT SUBSTR( common, 1, INSTR( common, '\', -1 ) ) AS common
FROM substrs
WHERE num_matches = 1
AND ROWNUM = 1
Результаты :
| COMMON |
|------------------------------------------|
| \roomname\nameid\department\foledertest\ |