首頁 > 資料庫 > 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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板