SQL SERVER,使用patIndex查找另一个字符位置左侧的字符位置

时间:2017-07-12 13:37:20

标签: sql sql-server sql-server-2008

我使用patindex在我的nvarchar中找到了一个字符位置

declare @pmReportText nvarchar(max)
set @pmReportText = 'lots and lots of text;

declare @emptyTag int
select @emptytag = patindex('%></%',@pmReportText) +1

从那一点(@emptyTag中的值)我需要找到左边的第一个匹配。 (patindex('>%<',@pmReportText)

我需要与当前nvarchar(@pmReportText)相关的位置,所以我不认为使用

之类的东西
declare @leftOfTag nvarchar(max)
    select @leftOfTag = rtrim(left(@pmReportText, @emptytag-1))
    select @leftOfTag = reverse(@leftOfTag)

    declare @startEmptyTag int
    select @startEmptyTag = patindex('>%<',@leftOfTag)

将起作用,因为该位置与原始varchar @pmReport

无关

我想做的是什么?如果是这样我将如何去做呢?

下面的

编辑: 是来自我正在使用的nvarchar的一小段数据, enter image description here

格林是我所处的位置(@emptyTag),我希望得到红色的位置。

1 个答案:

答案 0 :(得分:1)

是的,您开始使用的将会带来解决方案。

如您所知,您的@startEmptyTag将包含子字符串REVERSE中搜索字符的位置。

然后考虑一下,这相当于搜索字符在原始字符串中@emptyTag左侧的距离(字符数)。

现在您只需要从@emptyTag的位置减去距离,即可获得搜索字符的位置。你必须用&#34;搜索字符&#34;的长度来做一些数学运算。如果它不止一个字符,当然。