Мне нужно использовать STRING_SPLIT
в моей таблице этапов и импортировать результаты в другую таблицу.
Таблица этапов:
DECLARE @stage TABLE(ID INT, Code VARCHAR(500))
INSERT INTO @stage
SELECT 1, '123_Potato_Orange_Fish'
UNION ALL
SELECT 2, '456_Tomato_Banana_Chicken'
UNION ALL
SELECT 3, '789_Onion_Mango_Lamb'
Финальный стол:
DECLARE @Final TABLE
(
ID INT,
code VARCHAR(500),
Unit VARCHAR(100),
Vegetable VARCHAR(100),
Fruit VARCHAR(100),
Meat VARCHAR(100)
)
Я использую задачу выполнения служб SSIS для преобразования данных таблицы этапов и вставки в итоговую таблицу.Столбец Код в таблице этапов является строкой, а «_» используется в качестве разделителя.Мне нужно отделить строку и отобразить итоговую таблицу, как показано ниже
ID code Unit Vegetable Fruit Meat
------------------------------------------------------------------
1 123_Potato_Orange_Fish 123 Potato Orange Fish
2 456_Tomato_Banana_Chicken 456 Tomato Banana Chicken
3 789_Onion_Mango_Lamb 789 Onion Mango Lamb
Я пытаюсь использовать встроенную в SQL Server 2016 функцию String_Split()
, как показано здесь:
SELECT
ID,
Code, f.value AS Vegetable
FROM
@stage AS s
CROSS APPLY
(SELECT
value,
ROW_NUMBER() OVER(PARTITION BY s.ID ORDER BY s.ID) AS rn
FROM
String_Split(s.Code, '_')) AS f
WHERE
s.ID = 1 AND f.rn = 2
Но он разбивает только одну строку за раз, так как мои сценические данные содержат миллионы записей, мне нужно разбить всю строку в столбце кода и сохранить в соответствующем столбце.
Примечание: я не хочуиспользовать временную таблицу.
спасибо