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
在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