SQL 服务器,字符串为多行子串

SQL Server, string to be substring in multiple rows

在SQL服务器中,我的table结构是这样的:

OrderID CustomerID SerialNo
58258 877 OW13355-OW13356-OW13357-OW13358
58364 6 OW13269-OW13270-OW13271-OW13272
58816 20315 OW13940-OW13941-OW13942
59063 93085 OW13676-OW13677-OW13678-OW13679
59114 16713 OW12504-OW12505-OW12506
59519 470 OW14361-OW14362-OW14363
59769 34820 OW13928-OW13929-OW13930
60318 22424 OW14081-OW14082-OW14083-OW14084-OW14085-OW14086
60318 22424 OW14087-OW14088-OW14089
30858 16962 EF 22567 9
8097 6 OW76879

serialNo栏中,有时会连续输入多个流水号。我想提取每个由 - 符号连接的序列号并创建一个新行。每行应该只有 1 个序列号。例如,我想在 select.

中显示 orderid = 58258 的 4 条记录

这可以做到吗?

结果应该是

OrderID CustomerID SerialNo
58258 877 OW13355
58258 877 OW13356
58258 877 OW13357
58258 877 OW13358

这个给定的 table 结构应该显示 11 条记录的 35 条记录。你能帮我查询一下吗?

我正在使用 CHARINDEX 查找 '-' 字符,但是如何查找多次出现的 '-' 然后 select 作为多行?

SELECT OrderID, CustomerID, value  
FROM Table1
    CROSS APPLY STRING_SPLIT(SerialNo, '-'); 

使用内置的string_split函数!

   select orderid, customerid, v.value SerialNo
    from Table t
    cross apply String_Split(t.SerialNo,'-') v