两个字符之间的字符串/数字重复多次



我有一段话,两个字符串多次出现,我想一直取它们之间的数字。PFB字符串。

Str1 = <Expression type="Dell.DNC.Expressions.LiteralExpression" key="ProductPicker" literalValueType="System.String" name=>
Str2 = </Expression>
<Expression type="Dell.DNC.Expressions.LiteralExpression" key="ProductPicker" literalValueType="System.String" name=>1234</Expression>
absdf
<Expression type="Dell.DNC.Expressions.LiteralExpression" key="ProductPicker" literalValueType="System.String" name=>4321</Expression>
%#$%$dfs
<Expression type="Dell.DNC.Expressions.LiteralExpression" key="ProductPicker" literalValueType="System.String" name=>28320</Expression>

预期输出:

1234
4321
28320

我尝试过下面的代码,但不确定如何将其放入某个循环中。

DECLARE @expr_body nvarchar(max)
SET @expr_body = '<Expression type="Dell.DNC.Expressions.LiteralExpression" key="ProductPicker" literalValueType="System.String" name=>1234</Expression>
absdf
<Expression type="Dell.DNC.Expressions.LiteralExpression" key="ProductPicker" literalValueType="System.String" name=>4321</Expression>
%#$%$dfs
<Expression type="Dell.DNC.Expressions.LiteralExpression" key="ProductPicker" literalValueType="System.String" name=>28320</Expression>
' 
select REPLACE(LEFT(SUBSTRING(@expr_body, CHARINDEX('literalValueType="System.String" name=>', @expr_body), LEN(@expr_body)),43),
'literalValueType="System.String" name=>','')
DECLARE @expr_body nvarchar(max)
SET @expr_body = '<Expression type="Dell.DNC.Expressions.LiteralExpression" key="ProductPicker" literalValueType="System.String" name=>1234</Expression>
absdf
<Expression type="Dell.DNC.Expressions.LiteralExpression" key="ProductPicker" literalValueType="System.String" name=>4321</Expression>
%#$%$dfs
<Expression type="Dell.DNC.Expressions.LiteralExpression" key="ProductPicker" literalValueType="System.String" name=>28320</Expression>
';
select t.n.value('.', 'int')
from 
(
select try_cast(replace(@expr_body, N'name=>', N'>') as xml) as trycastxml
) as src
cross apply src.trycastxml.nodes('/Expression') as t(n);

最新更新