我有一个像这样的字符串 ,x,x,y,x,x,O,x,y 匹配它的值,而另一个字符串像这样 0〜1〜b ~~ z〜XY〜1〜7。 值“ O”可以切换其在字符串中的位置,其他字符串中的值也可以。 值“ O”位于第6位,因此预期结果将为“ XY”。 第一个字符串始终在每个值之前以“,”开头。第二个字符串首先以值开头,后跟“〜”。 “ O”是不会改变的给定值,因此我总是必须在第二个字符串中找到“ O”位置的给定值。
此IST我所expexting:
中,x,X,Y,X,X,O,X,Y 0〜1一个B ~~Ž〜XY〜1〜7
O = XY
,X,O,Y,X,X ,y,x,y 0〜1〜b ~~ z〜XY〜1〜7
O = 1
谢谢。
获取DelimitedSplit8K的副本,然后可以执行以下操作:
DECLARE @string1 VARCHAR(1000) = ',x,x,y,x,x,O,x,y', @string2 VARCHAR(1000) = '0~1~b~~z~XY~1~7'; DECLARE @search VARCHAR(1000) = 'O'; -- best as a variable/parameter SELECT * FROM dbo.delimitedSplit8K(@string2,'~') AS s WHERE s.itemNumber = ( SELECT TOP (1) s2.itemNumber -- TOP (1) until we know about dupicates FROM dbo.delimitedSplit8K(@string1,',') AS s2 WHERE s2.item = @search )-1;
返回值:
ItemNumber Item -------------------- ------- 6 XY