如何在 T-SQL 中获取可变大小的 nvarchar 的最后一部分?
How to get last part of nvarchar with variable size in T-SQL?
假设我的 nvarchar
变量中有以下值:
DECLARE @txt nvarchar(255)
SET @txt = '32|foo|foo2|123'
在这种情况下,有没有办法轻松获取最后一个 |
之后的最后一部分,即 123
?
我可以编写一个 split
函数,但我对此字符串的第一部分不感兴趣。有没有另一种方法可以在不获取字符串的第一部分的情况下获取字符串的最后一部分?
请注意,我的字符串的所有部分都具有可变大小。
您可以为此使用 LEFT
, REVERSE
and CHARINDEX
的组合。
下面的查询反转字符串,找到第一次出现的 |
,去掉其他字符,然后将字符串拉直。
DECLARE @txt nvarchar(255)
SET @txt = '32|foo|foo2|123'
SELECT REVERSE(LEFT(REVERSE(@txt),CHARINDEX('|',REVERSE(@txt))-1))
输出
123
编辑
如果您的字符串只有 4 个部分或更少,并且 .
不是有效字符,您也可以为此使用 PARSENAME
。
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))
假设我的 nvarchar
变量中有以下值:
DECLARE @txt nvarchar(255)
SET @txt = '32|foo|foo2|123'
在这种情况下,有没有办法轻松获取最后一个 |
之后的最后一部分,即 123
?
我可以编写一个 split
函数,但我对此字符串的第一部分不感兴趣。有没有另一种方法可以在不获取字符串的第一部分的情况下获取字符串的最后一部分?
请注意,我的字符串的所有部分都具有可变大小。
您可以为此使用 LEFT
, REVERSE
and CHARINDEX
的组合。
下面的查询反转字符串,找到第一次出现的 |
,去掉其他字符,然后将字符串拉直。
DECLARE @txt nvarchar(255)
SET @txt = '32|foo|foo2|123'
SELECT REVERSE(LEFT(REVERSE(@txt),CHARINDEX('|',REVERSE(@txt))-1))
输出
123
编辑
如果您的字符串只有 4 个部分或更少,并且 .
不是有效字符,您也可以为此使用 PARSENAME
。
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))