首页 > 解决方案 > 如何在不同的字符串中找到特定字符串位置的特定值

问题描述

我有一个像
,x,x,y,x,x,O,x,y这样的刺,它与另一个像 0~1~b~~z~XY~1~7
这样的刺中的值相匹配。 值“O”可以切换它在字符串中的位置,就像另一个字符串中的值一样。 值“O”位于第 6 位,因此预期结果将是“XY”。 第一个字符串总是在每个值之前以“,”开头。第二个字符串首先以值开头,后跟“~”。 “O”是一个不会改变的给定值,所以我总是必须在第二个字符串中找到“O”所在位置的给定值。




这就是我所期望的:

,x,x,y,x,x,O,x,y
0~1~b~~z~XY~1~7

O=XY


,x,O,y,x,x ,y,x,y
0~1~b~~z~XY~1~7

O=1

谢谢。

标签: sqltsql

解决方案


获取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

推荐阅读