当前位置: 代码迷 >> Sql Server >> 口试SQL题 得出表中含有文件的文件夹
  详细解决方案

口试SQL题 得出表中含有文件的文件夹

热度:93   发布时间:2016-04-24 21:32:52.0
面试SQL题 得出表中含有文件的文件夹


表:
test

path              isfolder

/music/a.sql        F
/music/             T
/pic/               T
/pic/b.sql          F
/mnt/               T


表test中,path字段和isfolder字段

写SQL,列出文件夹中有文件的文件夹

请各位大侠指点!
SQL 面试

------解决方案--------------------

if object_id('test') is not null
drop table test
go
create table test
(
path nvarchar(20),
isfolder nvarchar(10)
)
go
insert into test
select '/music/a.sql','F' UNION ALL
select '/music/','T' UNION ALL
select '/pic/','T' UNION ALL
select '/pic/b.sql','F' UNION ALL
select '/mnt/','T'
go
--select len(path) -charindex('/',reverse(path)) from test where isfolder ='F'
--select reverse(right(reverse(path),len(path) -charindex('/',reverse(path)))),* from test 
--where isfolder ='F'
go
select
substring(
reverse(right(reverse(path),len(path) -charindex('/',reverse(path)))),
2,
len(path) -charindex('/',reverse(path))
)
from test 
where isfolder ='F'

------解决方案--------------------
select a.path, a.isfolder from 
(select * from test where isfolder = 'T') a 
inner join
(select * from test where isfolder = 'F') b 
on b.path like a.path + '%'
  相关解决方案