用函数把ID拆成行,然后IN或者join--1.函数
if exists(select * from sys.objects where name = 'f_splitSTR' and type = 'tf')
   drop function dbo.f_splitSTR
go
 
create function dbo.f_splitSTR
(
    @s varchar(8000),     --要分拆的字符串
    @split varchar(10)    --分隔字符

returns @re table(                      --要返回的临时表
                     col varchar(1000)  --临时表中的列 
                 )
as
begin   
  declare @len int
   
  set @len = LEN(@split)      --分隔符不一定就是一个字符,可能是2个字符
   
  while CHARINDEX(@split,@s) >0
  begin
    insert into @re 
    values(left(@s,charindex(@split,@s) - 1))
     
    set @s = STUFF(@s,1,charindex(@split,@s) - 1 + @len ,'')    --覆盖:字符串以及分隔符
  end
   
  insert into @re values(@s)
   
  return   --返回临时表
end
go  
 
 
 
declare @res varchar(100)
set @res='1 2 3 4 5';
 
set @res = REPLACE(@res,' ',',')
 
select * from dbo.f_splitSTR(@res,',') t 
/*
col
1
2
3
4
5
*/

解决方案 »

  1.   

    字符串拆分有N种方法  也可以用REPLACE(@S,',',UNION ALL‘)这样来拼凑。
      

  2.   

    谢谢两位大神。
    我想到方法了,就是修改 “会通过一个自定义函数来生成一个业务号,作为表B的ID” 这里面的自定义函数,使他可以一次性生成N个业务号。然后写到临时表里。这样进行操作就是是一个多表之间的join操作了。