我在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
我确信有一个简单的解释,这可以有人帮忙吗?
答案 0 :(得分:10)
PARSENAME
专门用于解析sql对象名称。后一个示例中的句点数量使其免于这样的名称,因此呼叫正确失败。
相反
select right(@string2, charindex('.', reverse(@string2), 1) - 1)
答案 1 :(得分:4)
PARSENAME ( 'object_name' , object_piece )
'OBJECT_NAME' 是要为其检索指定对象部件的对象的名称。 此名称可以包含四个部分:服务器名称,数据库名称,所有者名称和对象名称。
如果我们提供超过4个部分,它将始终返回null。