Как указать имена столбцов в перекрестном соединении в SQL Server - PullRequest
0 голосов
/ 11 июля 2019

Я хочу знать, как мы упоминаем имя столбца в Cross Apply Join и указываем имя таблицы

Уже рабочий запрос:

select v.*, left(v.dir, charindex('/', v.dir) - 1) as dirname
from (values ('/Directory_A/Directory_B/Directory_C/Folder1/Folder2') ) t(path) cross apply
     (values (stuff(t.path, 1, len(t.path) - charindex(reverse('Directory_'), reverse(t.path)) + 1, ''))) v(dir)

Ожидаемый запрос:

select v.*, left(v.dir, charindex('/', v.dir) - 1) as dirname
from (values (“ColumnName”) ) t(path) cross apply
     (values (stuff(t.path, 1, len(t.path) - charindex(reverse('Directory_'), reverse(t.path)) + 1, ''))) v(dir) from table name

Ответы [ 2 ]

0 голосов
/ 11 июля 2019

Я думаю, вам просто нужна ссылка на таблицу:

select v.*, left(v.dir, charindex('/', v.dir) - 1) as dirname
from <tablename> tab cross apply
     (values (tab.ColumnName) ) t(path) cross apply
     (values (stuff(t.path, 1, len(t.path) - charindex(reverse('Directory_'), reverse(t.path)) + 1, ''))) v(dir) from table name
0 голосов
/ 11 июля 2019

Это будет работать для вас

DECLARE @path VARCHAR(100)='/Directory_A/Directory_B/Directory_C/Folder1/Folder2'

SELECT SUBSTRING( @path,LEN(@path)-LEN(SUBSTRING(@path,PATINDEX('%folder%',@path), 100))-1, 1)
...