-1

在此处输入图像描述

如何在以下条件下从Offset Group列和列中获取值?HedgeId

  1. SecurityGroupId获取的值应包含列中提到的字符串
  2. Offset Groupcolumn 和HedgeIdColumn 获取的值应该只包含剩余的字符串,该字符串位于SecurityGroupId.
4

2 回答 2

1

请使用下面的查询,

select 
parsename(replace(OffsetGroup,SecurityGroupID,'.'),1) as [Offset Group],
parsename(replace(HedgeID,SecurityGroupID,'.'),1) as [HedgeID]
from @TableName
where OffsetGroup like '%'+SecurityGroupID+'%'
and HedgeID like '%'+SecurityGroupID +'%'
于 2018-03-26T05:01:00.067 回答
0

您可以使用将行与条件匹配来拆分Offset GroupHedgeID值,然后使用带有 XML 转换的 CTE 将数据作为列检索:SecurityGroupIDlike

declare  @tmp table(SecurityGroupID varchar(10), OffsetGroup nvarchar(50), HedgeID varchar(50))

insert into @tmp values
 ('S1G', 'OG139099S1G36', 'HG139099S1G1')
,('S1G', 'OG139099S1G36', 'HG139099S1G2')
,('S1G', 'OG139099S1G36', 'HG139099S1G3')
,('S1G', 'OG139099S1G36', 'HG139099S1G4')
,('S1G', 'OG139099S1G36', 'HG139099S2G4')
,('S1G', 'OG139099S2G36', 'HG13909912G4')

;WITH CTEwithSplittedValues AS 
( 
    select 
         CAST('<x>' + REPLACE(OffsetGroup, SecurityGroupID,'</x><x>') + '</x>' AS XML) AS Offset_Group
        ,CAST('<x>' + REPLACE(HedgeID, SecurityGroupID,'</x><x>') + '</x>' AS XML) AS Hedge_ID
    from @tmp
    where OffsetGroup like '%' + SecurityGroupID + '%' 
          and HedgeID like '%' + SecurityGroupID + '%' 
)
SELECT 
Offset_Group.value(N'/x[2]','varchar(50)') AS [Offset Group] 
,Hedge_ID.value(N'/x[2]','varchar(50)') AS [HedgeID]

FROM CTEwithSplittedValues;

这是最终输出:

在此处输入图像描述

最后两行没有被提取,因为在和SecurityGroupID中都没有找到,而只在其中一个中找到。Offset GroupHedgeID

于 2018-03-25T14:34:34.493 回答