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

解决方案 »

  1.   

    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
    /*
    Id OrganName OrganId
    1 运输板块\集团决策层 123\444
    2 集团执行层\集团董事局\运输板块管理委员会 666\522\856
    3 运输板块管理委员会\航空运输板块领导 856\43
    */
      

  2.   

    --建立測試環境
    Create Table A
    (Id Int,
     OrganName Nvarchar(1000))
    Insert A Select 1,     N'运输板块\集团决策层' 
    Union All Select 2,     N'集团执行层\集团董事局\运输板块管理委员会'
    Union All Select 3,     N'运输板块管理委员会\航空运输板块领导'  Create Table B
    (Id Int,
     OrganName Nvarchar(100),
     OrganId  Int)
    Insert B Select 1,     N'运输板块',        123 
    Union All Select 2,     N'集团决策层',      444 
    Union All Select 3,     N'集团执行层',      666 
    Union All Select 4,     N'集团董事局',      522  
    Union All Select 5,     N'运输板块管理委员会',             856 
    Union All Select 6,     N'航空运输板块领导', 043   
    GO
    --建立函數
    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
    --刪除測試環境
    Drop Table A, B
    Drop Function F_GetOrganId
    GO
    --結果
    /*
    Id OrganName OrganId
    1 运输板块\集团决策层 123\444
    2 集团执行层\集团董事局\运输板块管理委员会 666\522\856
    3 运输板块管理委员会\航空运输板块领导 856\43
    */
      

  3.   

    --“\”改用“、”
    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