如何根据 sql 服务器或数据块中的特殊字符拆分数据

How do I split the data on the basis of special character in sql server or databricks

我有一个数据,其中包含 M_ID 列、CustomerID、维度

所以我想根据列名称的特殊字符 (___) 将数据拆分为列 - 维度 在特殊字符应该转到单独的列之前就像这样,即列名称:键值,后面的部分应该转到列名称:详细信息

源数据样本:

M_ID CustomerID Dimensions
12 20000 2___17971690,8___THANE,20___Experia_app_bflcust,63___GTM-MJZ5DX7 - 234 -

Table 结构应该是这样的:

M_ID CustomerID Keyvalue Details
12 20000 2 17971690
12 20000 8 THANE
12 20000 20 Experia_app_bflcust

您可以使用 STRING_SPLIT 将数据拆分为 ,。然后用CHARINDEX求出___,用SUBSTRING分出两半。

SELECT
  t.M_ID,
  t.CustomerID,
  SUBSTRING(s.Value, 1, NULLIF(CHARINDEX('___', s.Value), 0) - 1) Keyvalue,
  SUBSTRING(s.Value, NULLIF(CHARINDEX('___', s.Value), 0) + LEN('___') + 1, LEN(s.Value)) Details
FROM YourTable t
CROSS APPLY STRING_SPLIT(t.Dimensions, ',') s;

db<>fiddle

结果

M_ID CustomerID Keyvalue Details
12 20000 2 7971690
12 20000 8 HANE
12 20000 20 xperia_app_bflcust
12 20000 63 TM-MJZ5DX7 - 234 -