В SQL Server (при условии, что формат установлен на NAME.CATEGORY.SUBCATEGORY
, и у вас есть столбец Portfolio_full_name
в некоторой таблице, называемый здесь atable
, и обновляются столбцы Portfolio_name
, Portfolio_category
и Portfolio_subcategory
в той же таблице):
UPDATE atable
SET
Portfolio_name = SUBSTRING(s.Portfolio_full_name, 1, DotPos1 - 1),
Portfolio_category = SUBSTRING(s.Portfolio_full_name, DotPos1 + 1, DotPos2 - DotPos1 - 1),
Portfolio_subcategory = SUBSTRING(s.Portfolio_full_name, DotPos2 + 1, FullLen - DotPos2)
FROM (
SELECT
Portfolio_full_name,
DotPos1 = CHARINDEX('.', Portfolio_full_name),
DotPos2 = CHARINDEX('.', Portfolio_full_name, CHARINDEX('.', Portfolio_full_name) + 1),
FullLen = LEN(Portfolio_full_name)
FROM (
SELECT Portfolio_full_name FROM atable
) s
) s
WHERE atable.Portfolio_full_name = s.Portfolio_full_name