SQL 如何把字符串拆分按固定值插入到表里?

2025-03-25 22:18:25
推荐回答(1个)
回答1:

--方法一(用xml来拆分字符串)
Select id,type,name,app  From 
 (
Select id,type, CAST( ''+REPLACE(name,',','')+'' as xml) As xml,app 
From (select  1 As id,'A' As type,'张三,李四,王五' As name,0 As APP) S
 ) a outer apply ( Select x.y.value('.','varchar(100)') as name 
From a.xml.nodes('/v') x(y)) b

--方法二(表值函数拆分字符串)
Create function  f_split (@SourceSql   varchar(8000),@StrSeprate   varchar(2))   
  returns   @temp   table(col   varchar(100))   
  as     
  begin   
  declare   @ch   as   varchar(100)   
  set   @SourceSql=@SourceSql+@StrSeprate     
  while(@SourceSql<>'')   
                  begin   
                  set   @ch=left(@SourceSql,charindex(@StrSeprate,@SourceSql,1)-1)   
  insert   @temp   values(@ch)   
  set   @SourceSql=stuff(@SourceSql,1,charindex(@StrSeprate,@SourceSql,1),'')   
                  end   
  return   
  end   
  
--调用  
select 1 As id,'A' As Type,Col As name,0 As app
from dbo.f_split('张三,李四,王五',',')