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

如何把字符串拆分按固定值插入到t1表里?
字符串为:张三,李四,王五 (id、type、字符串为外部输入)
表 t1 结构如下:
id type name app

插入后的结果:

id type name app

1 A 张三 0
1 A 李四 0
1 A 王五 0

--方法一(用xml来拆分字符串)
Select id,type,name,app  From 
 (
Select id,type, CAST( '<v>'+REPLACE(name,',','</v><v>')+'</v>' 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('张三,李四,王五',',')

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答