如何在SQL Server中获取列中某个词后的值?

问题描述 投票:0回答:1

enter image description here

如何只获取 Phone NumberKey 值从 column-A 表中,这样我就可以使用这些。Phone NumberKey 值并在另一个表中进行过滤?

结果。电话号码=998767700Key=34567

先谢谢你。

ssms
1个回答
0
投票

从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 请考虑将你的表的结构改为规范化的结构。

© www.soinside.com 2019 - 2024. All rights reserved.