请教一个多值关联查询的问题!
类型表: 
 KeyID         Type_Name 
       1                     广州 
       2                     深圳 
       3                     中山 
       4                     厦门 
       5                     珠海   
 A表 
 KeyID         V_Type 
       1                  2,3,4    
       2                  2,5 
       3                  3 
 其中KeyID为主键,V_Type字段的值可以为空或多值,V_Type的值与类型表主键关联,现需要实现A表与类型表关联查询,需实现一下效果: 
 KeyID         V_Type 
       1               深圳,中山,厦门 
       2               深圳,珠海 
       3               中山 
 (除了自己写函数,还有什么更好,效率更高的办法?)
------解决方案--------------------create table ta(KeyID int,  [Type_Name] nvarchar(5)) 
 insert ta select   1,        '广州 ' 
 union all select   2,        '深圳 ' 
 union all select   3,        '中山 ' 
 union all select   4,        '厦门 ' 
 union all select   5,        '珠海 ' 
 go 
 create table tb(KeyID int,  V_Type nvarchar(20)) 
 insert tb select   1,       '2,3,4 '  
 union all select   2,       '2,5 ' 
 union all select   3,       '3 ' 
 go     
 create function test_f(@v_type nvarchar(20)) 
 returns nvarchar(20) 
 as 
 begin 
 	declare @s nvarchar(20) 
 	select @s=isnull(@s+ ', ', ' ')+[Type_Name] from ta where charindex( ', '+rtrim(KeyID)+ ', ', ', '+@v_type+ ', ')> 0 
 	return @s 
 end 
 go   
 select KeyID,[V_Type]=dbo.test_f(V_Type) from tb   
 --drop table ta,tb 
 --drop function test_f 
 KeyID       V_Type                
 ----------- --------------------  
 1           深圳,中山,厦门 
 2           深圳,珠海 
 3           中山   
 (所影响的行数为 3 行)