используя PARSENAME, чтобы найти последний элемент в списке - PullRequest
6 голосов
/ 15 февраля 2012

Я использую Parsename в SQL и хотел бы извлечь последний элемент в списке элементов. Я использую следующий код.

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 ]

10 голосов
/ 15 февраля 2012

PARSENAME разработан специально для анализа имени объекта sql.Количество периодов в последнем примере освобождает его от такого имени, поэтому вызов правильно завершается неудачей.

Вместо

select right(@string2, charindex('.', reverse(@string2), 1) - 1)
4 голосов
/ 15 февраля 2012

PARSENAME ( 'object_name' , object_piece )

'имя_объекта' Имя объекта, для которого требуется извлечь указанную часть объекта. Это имя может состоять из четырех частей : имя сервера, имя базы данных, имя владельца и имя объекта.

Если мы передадим более 4 частей, оно всегда будет возвращать ноль.

Для Ref: http://msdn.microsoft.com/en-us/library/ms188006.aspx

...