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

时间:2012-02-15 16:04:33

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

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

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

SELECT PARSENAME(@string, 1)

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

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

SELECT PARSENAME(@string2, 1)

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

我确信有一个简单的解释,这可以有人帮忙吗?

2 个答案:

答案 0 :(得分:10)

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

相反

select right(@string2, charindex('.', reverse(@string2), 1) - 1)

答案 1 :(得分:4)

PARSENAME ( 'object_name' , object_piece )

'OBJECT_NAME' 是要为其检索指定对象部件的对象的名称。 此名称可以包含四个部分:服务器名称,数据库名称,所有者名称和对象名称。

如果我们提供超过4个部分,它将始终返回null。

参考:http://msdn.microsoft.com/en-us/library/ms188006.aspx