Tsql 如何在T-SQL中获得大小可变的nvarchar的最后一部分?

Tsql 如何在T-SQL中获得大小可变的nvarchar的最后一部分?,tsql,nvarchar,Tsql,Nvarchar,假设我的nvarchar变量中有以下值: DECLARE @txt nvarchar(255) SET @txt = '32|foo|foo2|123' 在这种情况下,有没有办法在最后一个|即123之后轻松获取最后一个零件 我可以编写一个split函数,但我对这个字符串的前半部分不感兴趣。有没有其他方法可以在不获取第一部分的情况下获取字符串的最后一部分 请注意,字符串的所有部分都有不同的大小 为此,您可以使用和的组合。 下面的查询反转字符串,查找第一个出现的|,去掉其他字符,然后将字符串拉直

假设我的
nvarchar
变量中有以下值:

DECLARE @txt nvarchar(255)
SET @txt = '32|foo|foo2|123'
在这种情况下,有没有办法在最后一个
|
123
之后轻松获取最后一个零件

我可以编写一个
split
函数,但我对这个字符串的前半部分不感兴趣。有没有其他方法可以在不获取第一部分的情况下获取字符串的最后一部分


请注意,字符串的所有部分都有不同的大小

为此,您可以使用和的组合。 下面的查询反转字符串,查找第一个出现的
|
,去掉其他字符,然后将字符串拉直

DECLARE @txt nvarchar(255)
SET @txt = '32|foo|foo2|123'

SELECT REVERSE(LEFT(REVERSE(@txt),CHARINDEX('|',REVERSE(@txt))-1))
输出

123
编辑

123
如果您的字符串只有4个部分或更少,并且
不是有效字符,您也可以使用它

DECLARE @txt nvarchar(255)
SET @txt = '32|foo|foo2|123'
SELECT PARSENAME(REPLACE(@txt,'|','.'),1)

您可以反转字符串以获得所需的结果:

DECLARE @txt nvarchar(255) = '32|foo|foo2|123'
SELECT REVERSE(SUBSTRING(REVERSE(@txt), 1, CHARINDEX('|', REVERSE(@txt)) -1))

很好用!谢谢!:)很好用!我会接受ughai的回答,因为我更喜欢使用
LEFT
,不过还是要谢谢你+1:)@Aleph0,不客气。自由填写,选择最适合您需求的答案。