我有张A表,A可能实时插入新行,其中有个字段叫它code吧,
这个code字段里包含了只是一组,至多无数组的随机码,每组码以“|”开头,所以有如下可能
code
|adbosdbodao
|naonndsaooda
|nandoac|nononoc|noocnnsa
|mmciscp|oamcid22p
|mimnncodo|nononcomp
|o3ocmipjdpa|mmmmmpmpfe
|mmcdmpdc
现在要把A的code中的所有码插入表B,要求结果如下
adbosdbodao
naonndsaooda
nandoac
nononoc
noocnnsa
mmciscp
oamcid22p
mimnncodo
等待
而且插过的码,不需要插第二次,在不改变两表的结构的情况下能不能实现,实在不行的话可以改变表结构
另由于A的表实时更新,数据量大,需要尽量让所有的语句效率最高
------解决思路----------------------
INSERT INTO B
SELECT T2.v FROM
(SELECT CONVERT(XML,'<v>'+REPLACE(STUFF(code,1,1,''),'
------解决思路----------------------
','</v><v>')+'</v>')codes FROM A)T1
CROSS APPLY(SELECT N.V.value('.','varchar(100)')v FROM T1.codes.nodes('v') N(V))T2
GROUP BY T2.v