【发布时间】:2019-07-25 23:37:41
【问题描述】:
048(70F-Y),045(DDI-Y),454(CMDE-Y)
我在一个列字段中有上述数据,我需要提取前面的每个数字,所以在上面的例子中我希望看到 048、045、454。
请注意,在上面的每条记录中,字段中的数据都会发生变化,您有 3 组数字。有时您可能只有一套或 6 套。我只需要捕获( 左侧的所有数字集。
理想情况下,我希望结果显示在如下所示的新列中。我已经尝试了一些事情,但没有得到任何帮助。
我希望结果如下所示:
+----------+-----------------------------------+---------------+
| EventId | PAEditTypes | Edits |
+----------+-----------------------------------+---------------+
| 6929107 | 082(SPA-Y),177(QL-Y) | 082, 177 |
| 26534980 | 048(70F-Y),045(DDI-Y),454(CMDE-Y) | 045, 048, 454 |
+----------+-----------------------------------+---------------+
【问题讨论】:
-
我会为这种情况推荐函数或循环
-
我更喜欢使用循环,这就是我正在尝试开发但不知道如何设置它。
-
在逗号上使用
string_split()。然后使用left()和charindex()提取初始括号之前的所有内容。与listagg()重新组合订单重要吗? -
我使用了 string_spilit 但不确定如何做你推荐的 left 和 charindex() 部分。
-
SELECT evt.EventId , s.value FROM [PBM_Ops_Reporting].[Pahub].[Events] AS EVT CROSS APPLY STRING_SPLIT(evt.[PAEditTypes], '(') S
标签: sql sql-server tsql ssms-2017