2015-10-07 4 views
0

ПРИМЕЧАНИЕ: Я использую TSQLИзвлечение значения между двумя символами с различными позициями

Мне нужно уметь извлекать данные из середины строки. И длина требуемых данных, и длина строки будут различаться.

Вот примеры полной строки:

362 Any Rd - NewPc#:420010079274892700465647513335 - StopID:12345 

362 Any Rd - NewPc#:4200644392748927004720180006426006 - StopID:12345 

362 Any Rd - NewPc#:00006675214112593057 - StopID:12345 

362 Random Rd - NewPc#:420063709274892700465647550149 - StopID:4567 

мне нужно только следующие из приведенных выше строк:

420010079274892700465647513335 

4200644392748927004720180006426006 

00006675214112593057 

420063709274892700465647550149 

Может кто-то пожалуйста, помогите мне понять это?

+0

Спасибо всем за помощь. Я смог понять это. Не может быть самым изящным решением, но вот что я сделал: SUBSTRING ((SUBSTRING (OER.Note, PATINDEX ('% #:%', OER.Note) +2,60)), 1, (CHARINDEX (' StopID ', OER.Note, -6) - CHARINDEX (' #: ', OER.Note, 2) - 5)) – Chris

ответ

0
Select SUBSTRING(Note,CHARINDEX ('#:' , Note, 1) +2, 
        CHARINDEX (' - S' ,Note ,1)- 
     CHARINDEX ('#:' , Note, 1) -2)   
    from OER 

Вы можете использовать 2 функции для таблицы ООР: первым, чтобы найти место для ":"

CHARINDEX ('#:' , Note, 1) +2 

+2, чтобы избавиться от "#:"

Вам нужно использовать это 2 раза, еще раз для «- S». Чтобы узнать, сколько символов вы хотите поместить.

CHARINDEX (' - S' ,Note ,1) 

И вторая функция Substring использовать часть вашего Примечания

ссылки SQL скрипки: http://sqlfiddle.com/#!3/95ce8/7/0

+0

Это не сработало для меня. Возможно, я сделал что-то неправильно, но у меня появилось следующее сообщение об ошибке: Неверный параметр длины передан функции LEFT или SUBSTRING. – Chris

+0

Протестируйте сейчас, пожалуйста, – Balinti

+0

В этот раз тоже не работало. Я просто получил - как результат. Имя моей таблицы - OER.Note. Это то, что я использовал: SUBSTRING (OER.Note, CHARINDEX ('- S', OER.Note, 1), CHARINDEX ('- S', OER.Note, 1) - CHARINDEX ('- S', OER.Note , 1) +2) – Chris

0

Вы можете использовать комбинацию substring и charindex.

Fiddle

select 
substring(somecolumn, charindex(':',somecolumn) + 1, 
     len(somecolumn) - 
     charindex('-', reverse(somecolumn)) - 1 - charindex(':',somecolumn)) 
from tablename 
0

Пример заключается в следующем: У вас есть строки и символ $

Строка:

aaaaa$bbbbb$ccccc 

Код:

SELECT SUBSTRING('aaaaa$bbbbb$ccccc',CHARINDEX('$','aaaaa$bbbbb$ccccc')+1, CHARINDEX('$','aaaaa$bbbbb$ccccc',CHARINDEX('$','aaaaa$bbbbb$ccccc')+1) -CHARINDEX('$','aaaaa$bbbbb$ccccc')-1) as My_String 

Выход:

bbbbb 
Смежные вопросы