declare @newdata varchar(30)
set @newdata='IDS_ENUM_Change_262147_190'
select REVERSE(substring(reverse(@newdata),0,charindex('_',reverse(@newdata))))
=== Объяснение ===
Мне было легче читать написанное так:
SELECT
REVERSE( --4.
SUBSTRING( -- 3.
REVERSE(<field_name>),
0,
CHARINDEX( -- 2.
'<your char of choice>',
REVERSE(<field_name>) -- 1.
)
)
)
FROM
<table_name>
- Обратный текст
- Ищите первое вхождение указанного символа (т. Е. Первое вхождение ОТ КОНЦА текста).Получает индекс этого символа
- Снова просматривает перевернутый текст.поиск от индекса 0 до индекса вашего персонажа.Это дает искомую строку, но в обратном порядке
- Перевернутая строка перевернута, чтобы получить желаемую подстроку