Начиная с SQL Server 2016, вы можете использовать string_split
(подробнее здесь ) для разделения пар ключ / значение в вашей строке. Затем вы можете использовать синтаксис XML для извлечения ключей и значений:
declare @test table (id int, columnA varchar(100))
insert into @test select 1, 'Name = john;Phone Number=998767700;amount=90; Key=34567'
;WITH Splitted
AS (
SELECT
[Id]
,CAST('<x>' + REPLACE(value, '=', '</x><x>') + '</x>' AS XML) AS Parts
from
@test
cross apply
string_split(columna,';')
where
ltrim(value) like 'Phone Number%'
or ltrim(value) like 'Key%'
)
SELECT
[Id]
,ltrim(rtrim(Parts.value(N'/x[1]', 'varchar(100)'))) AS [key]
,ltrim(rtrim(Parts.value(N'/x[2]', 'varchar(100)'))) AS [value]
FROM Splitted;
Результат:
PS Пожалуйста, рассмотрите возможность изменения структура вашей таблицы нормализована