Как получить значение после определенного слова в столбце SQL Сервер? - PullRequest
0 голосов
/ 07 апреля 2020

enter image description here

Как получить из таблицы column-A значение Phone Number и Key, чтобы я мог использовать эти Phone Number и Key значений и фильтра в другой таблице?

Результат: Номер телефона = 998767700 Ключ = 34567

Заранее спасибо.

1 Ответ

0 голосов
/ 29 апреля 2020

Начиная с 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;

Результат:

enter image description here

PS Пожалуйста, рассмотрите возможность изменения структура вашей таблицы нормализована

...