【问题标题】:How to split the column base on the underscore如何根据下划线拆分列
【发布时间】:2019-04-23 13:40:46
【问题描述】:
****Original          Column    After separated****
CustomerID  CustomerID1 CustomerID2 CustomerID3 CustomerID4
1_2_R_0           1             2           R      0
3_3_0             3             3           0    
4_2               4             2

客户 ID 是原始列,我需要根据下划线将其拆分为多个列,以 customerID1customerID2customerID3customerID4.

【问题讨论】:

标签: sql-server tsql split


【解决方案1】:

由于最多只有 4 个 ID,因此您可以使用 parsename()。但是,我会选择 XML 方法。

示例

Select A.CustomerID
      ,B.*
 From  YourTable A
 Cross Apply (
    Select CustomerID1 = xDim.value('/x[1]','varchar(100)')
          ,CustomerID2 = xDim.value('/x[2]','varchar(100)')
          ,CustomerID3 = xDim.value('/x[3]','varchar(100)')
          ,CustomerID4 = xDim.value('/x[4]','varchar(100)')
     From  (values (cast('<x>' + replace([CustomerID],'_','</x><x>')+'</x>' as xml))) X(xDim)
 ) B 

退货

【讨论】:

  • 嗨,约翰,它的工作正常,完全符合我的需要。非常感谢。
  • @Maqbul 如果此解决方案按您的预期工作,请接受此答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多