读书人

请教一条SQL语句的写法

发布时间: 2012-03-05 11:54:02 作者: rapoo

请问一条SQL语句的写法
A表结构如下: Id OrganName
-------------------------
1 运输板块\集团决策层\
2 集团执行层\集团董事局\运输板块管理委员会
3 运输板块管理委员会\航空运输板块领导

B表结构: Id OrganName OrganId
----------------------------------------
1 运输板块 123
2 集团决策层 444
3 集团执行层 666
4 集团董事局 522
5 运输板块管理委员会 856
6 航空运输板块领导043

运行的结果 Id OrganName OrganId
-------------------------------
1 运输板块\集团决策层\ 123、444
2 集团执行层\集团董事局\运输板块管理委员会 666、522、856 3 运输板块管理委员会\航空运输板块领导 856、043

[解决办法]
Create Function F_GetOrganId(@OrganName Nvarchar(1000))
Returns Varchar(1000)
As
Begin
Declare @S Varchar(1000)
Select @S = ' '
Select @S = @S + '\ ' + Rtrim(OrganId) From B Where CharIndex( '\ ' + OrganName + '\ ' , '\ ' + @OrganName + '\ ') > 0
Select @S = Stuff(@S, 1, 1, ' ')
Return @S
End
GO
Select
Id,
OrganName,
dbo.F_GetOrganId(OrganName) As OrganId
From
A
GO
--Result
/*
IdOrganNameOrganId
1运输板块\集团决策层123\444
2集团执行层\集团董事局\运输板块管理委员会666\522\856
3运输板块管理委员会\航空运输板块领导856\43
*/
[解决办法]
--“\”改用“、”
Create Function F_GetOrganId(@OrganName Nvarchar(1000))
Returns Varchar(1000)
As
Begin
Declare @S Varchar(1000)
Select @S = ' '
Select @S = @S + '、 ' + Rtrim(OrganId) From B Where CharIndex( '\ ' + OrganName + '\ ' , '\ ' + @OrganName + '\ ') > 0
Select @S = Stuff(@S, 1, 1, ' ')
Return @S
End

读书人网 >SQL Server

热点推荐