当前位置: 代码迷 >> Sql Server >> SQL交织插入数据
  详细解决方案

SQL交织插入数据

热度:56   发布时间:2016-04-24 09:02:24.0
SQL交叉插入数据
有字符串  ‘123,456,789’ 与 ‘aa,bb’ 需要插入到表
tmp中 其中字段为  [number],[char]

插入的规则就是笛卡尔积,也就是 数字有三条 字符两个,那么一共是插入六行输入
123,aa
123,bb
456,aa
456,bb
789,aa
789,bb

请问如何做。

现在假设已经有字符串拆分函数dbo.fn_StrSplitToTable(str,split) //需要拆分的str ,根据  split拆。
返回一张拆分后的表

如select * from dbo.fn_StrSplitToTable('123,456,789',',') 
123
456
789
------解决思路----------------------
INSERT INTO tmp
SELECT * FROM
(select * from dbo.fn_StrSplitToTable('123,456,789',',') )T1,
(select * from dbo.fn_StrSplitToTable('aa,bb',',') )T2

------解决思路----------------------

insert into TABLE
select * from dbo.fn_StrSplitToTable('123,456,789',',') ,(select 'aa' b union all select 'bb')t2

--------------------------------------------------------------------------------
;with tab(a) as(
select 123 union all
select 456 union all
select 789
)select * from tab,(select 'aa' b union all select 'bb')t2 order by a


123 aa
123 bb
456 aa
456 bb
789 aa
789 bb

------解决思路----------------------
假设拆分后各自返回的表是A和B,


INSERT INTO tmp
SELECT  A.字段名+B.字段名 FROM A,B
  相关解决方案