簡體   English   中英

SQL 服務器 - 從給定的字符串字段中提取文本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM