首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请教一条SQL语句的写法

2012-03-05 
请问一条SQL语句的写法A表结构如下:IdOrganName-------------------------1运输板块\集团决策层\2集团执行

请问一条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

热点排行