[英]SQL Server - Extract text from a given string field
從下面的字符串字段中提取文本的最佳方法是什么?
我正在嘗試提取下面的 ProjectID 編號(91、108、250),但由於 ProjectID 的長度為 2 或 3 個整數並且位於字符串的不同部分,因此我很掙扎。
Row Parameter
1 ProjectID=91&GroupID=250&ParentID=1
2 ProjectID=108&GroupID=250&ParentID=35
3 GroupID=1080&ProjectID=250&ParentID=43
4 ProjectID=250
任何幫助將非常感激。
SQL 服務器在字符串功能上有點糟糕。 這是一種方法:
select left(v1.p, patindex('%[^0-9]%', v1.p + ' ') - 1)
from (values ('ProjectID=91&GroupID=250&ParentID=1'),
('ProjectID=108&GroupID=250&ParentID=35'),
('GroupID=1080&ProjectID=250&ParentID=43'),
('ProjectID=250')
) v(parameter) cross apply
(values (stuff(v.parameter, 1, charindex('ProjectID=', v.parameter) + 9, ''))
) v1(p);
或者拆分字符串並尋找匹配項:
select stuff(s.value, 1, 10, '')
from (values ('ProjectID=91&GroupID=250&ParentID=1'),
('ProjectID=108&GroupID=250&ParentID=35'),
('GroupID=1080&ProjectID=250&ParentID=43'),
('ProjectID=250')
) t(parameter) cross apply
string_split(t.parameter, '&') s
where s.value like 'ProjectId=%';
這是一個 db<>fiddle。
SELECT
substring ( @Parameter,
CHARINDEX('ProjectID', @Parameter) + 10,
CHARINDEX('&', @parameter, CHARINDEX('ProjectID', @Parameter)) -
(CHARINDEX('ProjectID', @Parameter) + 10))
from table
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.