小编典典

如何在不同的字符串中找到特定的STRING位置的特定值

sql

我有一个像这样的字符串
,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

谢谢。


阅读 192

收藏
2021-03-10

共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
2021-03-10