對高手來說很簡單,對我來說很復雜的問題,請教大家…
表1:
=====================
姓名 去過的地方
張三 a,b,h
李四 i,e,c,b
=====================
表2:
=====================
代號 地方名稱
a 上海
b 北京
c 成都
d 長沙
e 深圳
i 廣州
h 香港
=====================
我要寫一條SQL語句,得出結果:
=================================
姓名 去過的地方
張三 上海,北京,香港
李四 廣州,深圳,成都,北京
=================================
多謝了!僅有的50分送給你!!!
------解决方案--------------------jf
------解决方案--------------------表1:
=====================
姓名 去過的地方
張三 a,b,h
李四 i,e,c,b
=====================
不符合范式哦
------解决方案--------------------create table t1(n varchar(10),p nvarchar(30))
insert t1
select N '張三 ', 'a,b,h '
union select N '李四 ', 'i,e,c,b '
create table t2(code varchar(10),n1 nvarchar(30))
insert t2
select 'a ' , '上海 '
union select 'b ' , N '北京 '
union select 'c ' , N '成都 '
union select 'd ' , N '長沙 '
union select 'e ' , N '深圳 '
union select 'i ' , N '廣州 '
union select 'h ' , N '香港 '
select n,dbo.tf(p) from t1
create function tf(@id varchar(30))
returns varchar(1000)
as
begin
declare @str varchar(1000)
set @str= ' '
select @str=@str+ ', '+n1 from t2 where charindex(code,@id)> 0
set @str=stuff(@str,1,1, ' ')
return @str
end
drop function tf
drop table t1,t2
------解决方案--------------------create table t1(n varchar(10),p nvarchar(30))
insert t1
select N '張三 ', 'a,b,h '
union select N '李四 ', 'i,e,c,b '
create table t2(code varchar(10),n1 nvarchar(30))
insert t2
select 'a ' , '上海 '
union select 'b ' , N '北京 '
union select 'c ' , N '成都 '
union select 'd ' , N '長沙 '
union select 'e ' , N '深圳 '
union select 'i ' , N '廣州 '
union select 'h ' , N '香港 '
go
create function tf(@id varchar(30))
returns nvarchar(1000)
as
begin
declare @str varchar(1000)
set @str= ' '
select @str=@str+ ', '+n1 from t2 where charindex(code,@id)> 0
set @str=stuff(@str,1,1, ' ')
return @str
end
go
select n,p=dbo.tf(p) from t1
drop function tf
drop table t1,t2
/*