CHARINDEX
- ваш друг здесь. Вам нужно будет вложить его в себя и запустить его дважды, потому что вам нужен второй экземпляр.
DECLARE @SearchString nvarchar(max)
SET @SearchString = '123400000111111~forname1~surname1~P50206.00011'
DECLARE @Delimiter nvarchar(1)
SET @Delimiter = '~'
/*
SELECT @SearchString AS [Your String]
--the string puked back
SELECT
RIGHT
(
@SearchString,
LEN(@SearchString) - charindex(@Delimiter, @SearchString)
) AS [The First Instance]
--first instance of @Delimiter
*/
SELECT
RIGHT
(
RIGHT
(
@SearchString,
LEN(@SearchString) - CHARINDEX(@Delimiter, @SearchString)
),
LEN
(
RIGHT(@SearchString, LEN(@SearchString) - CHARINDEX(@Delimiter, @SearchString))
) -
CHARINDEX
(
@Delimiter, RIGHT(@SearchString, LEN(@SearchString) - CHARINDEX(@Delimiter, @SearchString))
)
) AS [Your Awful Order By]
--what you're after
Но за любовь ко всему, что является священным в мире баз данных, а также ради собственного здравого смысла, не говоря уже о производительности, не хранят данные, как это!
Просим вас пометить ваш вопрос в базе данных, которую вы используете? –
Не храните такие данные, это вызовет у вас массу проблем! Имеют отдельные столбцы для разных значений. – jarlh
Если вы используете SQL Server: http://stackoverflow.com/questions/2647/how-do-i-split-a-string-so-i-can-access-item-x – nicomp