Если у вас SQL Server 2016+, вы можете попробовать подход, основанный на JSON. Просто преобразуйте данные в действительные массивы JSON и проанализируйте эти массивы с помощью OPENJSON()
. Результат - это таблица со столбцами key
, value
и type
, а столбец key
содержит индекс элемента в этих массивах. При таком подходе вы можете анализировать более двух элементов.
Таблица:
CREATE TABLE Data (
OrderID nvarchar(100),
OrderName nvarchar(100)
)
INSERT INTO Data
(OrderID, OrderName)
VALUES
('11,12', 'A:B'),
('13,14', 'C:D'),
('15,16,17,18', 'E:F:G:H')
Оператор:
SELECT j1.[value] AS OrderId, j2.[value] AS OrderName
FROM Data d
CROSS APPLY OPENJSON(CONCAT(N'[', d.OrderId, N']')) j1
CROSS APPLY OPENJSON(CONCAT(N'["', REPLACE(d.OrderName, N':', N'","'), N'"]')) j2
WHERE j1.[key] = j2.[key]
Результат:
-----------------
OrderId OrderName
-----------------
11 A
12 B
13 C
14 D
15 E
16 F
17 G
18 H