如何只获取 Phone Number
和 Key
值从 column-A
表中,这样我就可以使用这些。Phone Number
和 Key
值并在另一个表中进行过滤?
结果。电话号码=998767700Key=34567
先谢谢你。
从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 请考虑将你的表的结构改为规范化的结构。