--select * from Messages --drop table #Msg001 Createtable #Msg001 (MSort varchar(50), MTopic varchar(50), MSender varchar(50), MSendTime datetime, MReceiver varchar(500), Mcontent varchar(1000), MState bit) declare@iint,@startint,@Receivervarchar(500),@Accvarchar(50),@ChNamevarchar(50),@AllChNamevarchar(500) declare@T1varchar(50),@T2varchar(50),@T3varchar(50),@T4datetime,@T5varchar(500),@T6varchar(1000),@T7bit --定义游标 declare Msg_cur scroll cursorforselect Sort,Topic,Sender,SendTime,Receiver,Content,State from Messages open Msg_cur Fetch first from Msg_cur into@T1,@T2,@T3,@T4,@T5,@T6,@T7 --select @Reciver=Receiver from Messages where Receiver='aaa|bit|01.02|' set@Receiver=@T5 while@@fetch_status=0 begin set@AllChName='' set@i=1 while (@i>0) begin if@i=1 set@start=@i else set@start=@i+1 set@i=charindex('|',@Receiver,@i+1) if (@i>1) begin set@Acc=SUBSTRING(@Receiver,@start,@i-@start) set@ChName=(select UserName from Accounts_Users where Account=@Acc) --if (该IF语句用判断是否在最后加",") if (@i=len(@Receiver)) select@AllChName=@AllChName+''+@ChName else select@AllChName=@AllChName+''+@ChName+',' --end if --select @ChName,@AllChName,@i,@Receiver end end --将接收者的姓名替换后插入到临时数据库里 insertinto #Msg001(MSort,MTopic,MSender,MSendtime,MReceiver,MContent,MState)values(@T1,@T2,@T3,@T4,@AllChName,@T6,@T7) Fetchnextfrom Msg_cur into@T1,@T2,@T3,@T4,@T5,@T6,@T7 set@Receiver=@T5 end --关闭游标 close Msg_cur deallocate Msg_cur select #Msg001.*,Messages_Sort.Name from #Msg001 INNERJOIN Messages_Sort ON #Msg001.MSort =Messages_Sort.ID droptable #Msg001