Подстрока после точки в SQL Server - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть поле, которое содержит данные, подобные этим

Product.Company.Price.Item

Я хочу подстроку любой строки после последней точки. так это будет выглядеть так

Item

Я знаю, что в MySQL есть функция substring.index. Как я могу реализовать это на SQL сервере?

Ответы [ 4 ]

1 голос
/ 30 апреля 2020

Если это всегда 4 части, вы можете использовать parsename() как

select parsename('Product.Company.Price.Item', 1)

или right() и charindex() как

select right(str, p)
from
(
    values ('Product.Company.Price.Item'), ('Other.row')
) t(str) cross apply
(
    values (charindex('.', reverse(str))-1)
) tt(p)
1 голос
/ 30 апреля 2020

Надеюсь, этот запрос отлично подойдет для вашего дела:

DECLARE @VAR VARCHAR(MAX)='Product.Company.Price.Item'

SELECT RIGHT(@VAR, CHARINDEX('.', REVERSE(@VAR) + '.') - 1) AS VARL
1 голос
/ 30 апреля 2020
select  reverse(substring(reverse(fieldName),1,charindex('.',reverse(fieldname))-1))

Это будет делать то, что вы хотите, но я бы не использовал его как часть выражения where

declare @x varchar(50) = 'Product.Company.Price.Item'
select  substring(@x,len(@x)-charindex('.',reverse(@x))+2,99)
0 голосов
/ 30 апреля 2020

Вы можете попробовать это, используя такие функции, как Reverse(), Left() и CHARINDEX().

DECLARE @Sentence VARCHAR(100) = 'Product.Company.Price.Item';

SELECT REVERSE(LEFT(REVERSE(@Sentence),
CHARINDEX('.',REVERSE(@Sentence))- 1)) AS [Last_Word]
...