create function dbo.fn_split 

@inputstr varchar(8000), 
@seprator varchar(10) 

returns @temp table (a varchar(200)) 
as 
begin 
declare @i int 
set @inputstr = rtrim(ltrim(@inputstr)) 
set @i = charindex(@seprator, @inputstr) 
while @i >= 1 
begin 
insert @temp values(left(@inputstr, @i - 1)) 
set @inputstr = substring(@inputstr, @i + 1, len(@inputstr) - @i) 
set @i = charindex(@seprator, @inputstr) 
end 
if @inputstr <> '\' 
insert @temp values(@inputstr) 
return 
end 
go 
--调用 
declare @s varchar(1000) 
set @s='1,2,3,4,5,6,7,8,55' 
select * from dbo.fn_split(@s,',') 
drop function dbo.fn_split 

解决方案 »

  1.   

    結合1樓的函數
    Create trigger tb_test
    on  table1
    for insert
    as
    declare @usernum varchar(8000),
    @message varchar(8000) 
    select @usernum=usernum,@message=message from inserted
    insert into table2(usernum,message)
    select a,@message  from dbo.fn_split(@usernum,',') 
      

  2.   

    在触发器中分解这个串,然后分别插入到tb2中.
    大致方法如下:
    declare @s as varchar(10)
    set @s = 'A,B,C,D,'
    while charindex(',',@s) > 0
    being
          insert into tb2 values(left(@s,charindex(',',@s)-1), '测试内容')
          set @s = substring(@s , charindex(',',@s) + 1 , len(@s))
    end