2017-04-07 4 views
1
Column A 

/Site/Test1/mysite/Do?id=90 
/Site/Test2/mysite/Done?id=10 
/NewSite/Site/Test3/mysite/Do?id=90 
/Site/Test3/mysite/Done?id=1901 

에서 특정 단어를 얻기 위해 각 행뿐만 아니라 = 후 #에서 Test#를 얻을 수있다.어떻게 내가 뭘하려고 오전 열 값

Select 
    SUBSTRING(Column A, CHARINDEX('/', Column A, 1) + 7, LEN(Column A)), 
    SUBSTRING(Column A, CHARINDEX('=', Column A, 1) + 1, LEN(Column A)), 
    Column A 
from 
    Table1 

내가 = 후 #을 얻을 수 있어요하지만 내가 어떻게 각 행에서 Test#를 얻을 수 있습니다 :

나는 다음 시도했다.

업데이트 : Test# 예를 들어, 그 안에 무엇이든있을 수 있습니다. 확실한 것은 SiteNewSite입니다.

업데이트 # 2 :

업데이트 표 :

Column A 
/Site/My%20Web%20Site/mysite/Do?id=90 
/Site/Test%20It%20Out/mysite/Do?id=101 
/Site/Test1/dummy/Done?id=1000 
/NewSite/Site/No%20Way/thesite/Do?id=909 

결과 :

Col1    Col2 
My%20Web%20Site  90 
Test%20It%20Out  101 
Test1    1000 
No%20Way   909 
+0

당신은'Site' 또는'mysite'는 "테스트"의 값이 아니라는 것을 어떻게 알 수 있습니까? –

+0

'Site' 인덱스 + 1과 다음'/'인덱스를 얻을 수있는 한, 텍스트 사이에있는 것을 얻고 싶습니다. – Si8

답변

1
select 
    Col1 = substring(a 
     , charindex('/Site/', a)+6 
     , charindex('/', a,(charindex('/Site/', a)+6))-(charindex('/Site/', a)+6) 
    ) 
    , Col2 = substring(a 
     , charindex('=', a, 1) + 1 
     , len(a)) 
from t 

rextester 데모 : http://rextester.com/DEBB37305

반환 :

+-----------------+------+ 
|  Col1  | Col2 | 
+-----------------+------+ 
| My%20Web%20Site | 90 | 
| Test%20It%20Out | 101 | 
| Test1   | 1000 | 
| No%20Way  | 909 | 
+-----------------+------+ 
+0

죄송합니다. '테스트'가 '테스트 #'에서 변경 될 수 있음을 언급하는 것을 깜빡합니다. – Si8

+0

내 질문 업데이트 ... – Si8

+0

@ Si8 업데이트 내 대답 – SqlZim

0

이 작동합니다 :

select SUBSTRING(col,CHARINDEX('Test',col),5) 

를 하나의 예제를 테스트하려면 :

select SUBSTRING('/Site/Test1/mysite/Do?id=90',CHARINDEX('Test','/Site/Test1/mysite/Do?id=90'),5) 
+0

죄송합니다. 내 질문이 업데이트되었습니다. – Si8