首页 > 数据库 > mysql教程 > 如何在 SQL 中将多个订阅号的单列拆分为单独的列?

如何在 SQL 中将多个订阅号的单列拆分为单独的列?

DDD
发布: 2024-12-17 01:47:24
原创
143 人浏览过

How can I split a single column of multiple subscription numbers into individual columns in SQL?

将订阅号拆分为多列

在单列包含多个值(例如订阅号)的情况下,将这些值拆分分成单独的列可能是一种有用的数据操作技术。这是分步指南:

1.交叉应用 XML 碎片:

此方法利用 XML 碎片将订阅号转换为 XML 文档,允许将各个值提取为单独的节点。

Cross Apply (
    Select Pos1 = ltrim(rtrim(xDim.value('/x[1]','varchar(max)')))
          ,Pos2 = ltrim(rtrim(xDim.value('/x[2]','varchar(max)')))
          ,Pos3 = ltrim(rtrim(xDim.value('/x[3]','varchar(max)')))
          ,Pos4 = ltrim(rtrim(xDim.value('/x[4]','varchar(max)')))
          ,Pos5 = ltrim(rtrim(xDim.value('/x[5]','varchar(max)')))
          ,Pos6 = ltrim(rtrim(xDim.value('/x[6]','varchar(max)')))
          ,Pos7 = ltrim(rtrim(xDim.value('/x[7]','varchar(max)')))
    From  (Select Cast('<x>' + replace((Select replace(replace(A.SomeCol,' ','-'),'-','§§Split§§') as [*] For XML Path('')),'§§Split§§','</x><x>')+'</x>' as xml) as xDim) as A 
) B
登录后复制

这里, xDim 是将订阅号字符串转换为 XML 的分段元素。编号为 x[1]、x[2] 等的结果节点将被提取到目标列中。

2。动态创建表:

或者,您可以在查询执行期间动态创建目标表。这消除了事先显式创建表的需要。

Select A.PUB_FORM_NUM
      ,B.*
 Into  MyNewPubTable
 From  @YourTable A
 Cross Apply (
                Select Pos1 = ltrim(rtrim(xDim.value('/x[1]','varchar(max)')))
                      ,Pos2 = ltrim(rtrim(xDim.value('/x[2]','varchar(max)')))
                      ,Pos3 = ltrim(rtrim(xDim.value('/x[3]','varchar(max)')))
                      ,Pos4 = ltrim(rtrim(xDim.value('/x[4]','varchar(max)')))
                      ,Pos5 = ltrim(rtrim(xDim.value('/x[5]','varchar(max)')))
                      ,Pos6 = ltrim(rtrim(xDim.value('/x[6]','varchar(max)')))
                      ,Pos7 = ltrim(rtrim(xDim.value('/x[7]','varchar(max)')))
                From  (Select Cast('<x>' + replace((Select replace(replace(A.PUB_FORM_NUM,' ','-'),'-','§§Split§§') as [*] For XML Path('')),'§§Split§§','</x><x>')+'</x>' as xml) as xDim) as A 
             ) B
登录后复制

此方法创建 MyNewPubTable 并将拆分订阅编号值直接插入到目标列中。

以上是如何在 SQL 中将多个订阅号的单列拆分为单独的列?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板