使用PARSENAME查找列表中的最后一项

Phi*_*ilC 6 sql sql-server ssms sql-server-2008

我在SQL中使用Parsename,并希望提取项目列表中的最后一个元素.我使用以下代码.

Declare @string as varchar(1000)
set @string = '25.26.27.28'

SELECT PARSENAME(@string, 1)
Run Code Online (Sandbox Code Playgroud)

这可以正常工作并返回值28.但是,如果我将列表扩展到超过4个项目,那么结果将返回NULL.例如:

Declare @string2 as varchar(1000)
set @string2 = '25.26.27.28.29'

SELECT PARSENAME(@string2, 1)
Run Code Online (Sandbox Code Playgroud)

我希望这返回值29但是只返回NULL

我敢肯定有一个简单的解释,这可以有人帮忙吗?

Ale*_* K. 11

PARSENAME专门用于解析sql对象名称.后一个示例中的句点数量使其免于这样的名称,因此呼叫正确失败.

代替

select right(@string2, charindex('.', reverse(@string2), 1) - 1)
Run Code Online (Sandbox Code Playgroud)

  • "1x2x3"如果你想找到最后一个x将字符串反转为"3x2x1"并获得带有charindex的第一个x(没有*lastcharindex*)然后从原始字符串的末尾读取该偏移量,-1跳过x本身. (2认同)