2016-03-10 2 views
0

Я работаю над SQL Server 2012, я хотел бы взять подстроку между 2-й и 3-й запятыми в строке ниже.В SQL, как подстроить между двумя специальными символами?

Вход:

IP-TEXT 

1CAT, 2DOG, 5.5, AAA, BE TTY 
TR2, 5lo, 9.1, LOL, ROFL 
PP09, 4432, 6, USA, UK 

Требуемая мощность:

OP-TEXT 

5.5 
9.1 
6 

Может кто-нибудь, пожалуйста, помогите с запросом SQL?

+0

Может ЮО также добавить 'А "", '', QQQ, TTT' на вход, а также настроить ожидаемый результат? – jarlh

+0

Да, эти типы входов также присутствуют в некоторых записях. – juned

+0

, например. одна из записей похожа на
XX, «flames, pl», 55, ABC, PQR – juned

ответ

2

Вы можете использовать CHARINDEX:

SELECT SUBSTRING(IP_TEXT, t2.p+1, t3.p - t2.p - 1) AS OP_TEXT 
FROM mytable 
CROSS APPLY (SELECT CHARINDEX(',', IP_TEXT)) AS t1(p) 
CROSS APPLY (SELECT CHARINDEX(',', IP_TEXT, t1.p+1)) AS t2(p) 
CROSS APPLY (SELECT CHARINDEX(',', IP_TEXT, t2.p+1)) AS t3(p) 
+0

Спасибо Giorgos Betsos! – juned

+0

@juned Рад, что я смог помочь и приветствовать Stack Overflow. Пожалуйста, отметьте это или любой другой ответ, как принято, если это поможет вам решить вашу проблему. –

0

CROSS ОТНОСИТЬСЯ функция работает. Я также нашел другой метод для получения значения между 2, d и 3-й запятой. Ниже запрос -

substring(IP-TEXT, 
      CHARINDEX(',',IP-TEXT, 
      (CHARINDEX(',', IP-TEXT) + 1)) + 1, 
      CHARINDEX(',',IP-TEXT, 
      (CHARINDEX(',',IP-TEXT, 
      (CHARINDEX(',',IP-TEXT)+1))+1))-  
      CHARINDEX(',',IP-TEXT, 
      (CHARINDEX(',',IP-TEXT)+1))) 

Цените вашу помощь людям :)

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