首页 > 解决方案 > 如何在 SQL Server 中的交叉应用联接中指定列名

问题描述

我想知道我们如何在 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

标签: sqlsql-servercross-apply

解决方案


我认为您只需要表格参考:

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

推荐阅读