2016-11-29 10 views
0

나는 테이블의 컬럼에 대한 값을 가지고 내가는 & 사이에 모든 것을 추출 - & 테이블의 열에서

baf93b64-c255-4dda-b9dc-3f7438b49335-mkttrg&utm_source=bing&utm_medium=cpc&utm_campaign=MO+-+Payday&utm_term=payday+loan&utm_content=Payday+Loans+(Phrase) 

가 지금은에서 추출 할 문자열의 일부를 정확한 필요 즉, 첫 번째 &,

utm-source = bing 
utm-medium = cpc 
utc_campaign = MO+Payday 
utm_term = 'payday+loan' 
utm_content = Payday+loans+(Phrase). 

당신이 열 언급 한 값에서이 부분을 추출하는 하위 문자열 함수 좀 도와주십시오 수 있습니다.

미리 감사드립니다.

답변

1

charindex에서 시작 부분에 substring을 사용하고, 문자 추출 수는 문자열의 길이로 시작과 끝에서 두 부분의 길이를 뺍니다. col이 원하는 형식이되도록 일부 데이터 유효성 검사를 수행해야합니다.

substring(col, charindex('&', col) + 1, len(col) - charindex('&', reverse(col)) - charindex('&', col)) 

시험 번호 :

DECLARE @col nvarchar(100) = '12&12545643&euwpo'; 

SELECT substring(@col, charindex('&', @col) + 1, len(@col) - charindex('&', reverse(@col)) - charindex('&', @col)) 
+0

그것이 error..Msg 537을 던지고, 수준 16, 상태 3, 줄 (16) LEFT 또는 SUBSTRING 함수에 잘못된 길이 매개 변수가 전달되었습니다. – kris

+1

진행 방법에 대한 확실한 아이디어를 줄 때 충분합니다. –

+0

@kris 테스트 코드를 추가했습니다. 희망이 도움이됩니다. – DVT

0

SplitString 함수를 사용을 통해 이러한 문제를 해결하는 주요 방법.

다음 당신의 의견에 따라 달라집니다 : 내가 내 질문에서 언급 한 내용을 문자열의

, 그것은 "한 utm_content = 봉급 + 대출 + (구문)"을 마지막 부분을 따기되지 않는에게 그것은 이 나던 끝내고있는 & 나는 추측한다!!

SELECT top ((select count (*) FROM dbo.SplitString('baf93b64-c255-4dda-b9dc-3f7438b49335-mkttrg&utm_source=bing&utm_medium=cpc&utm_campaign=MO+-+Payday&utm_term=payday+loan&utm_content=Payday+Loans+(Phrase)', '&') 
where item like '%=%') -1) item 
FROM dbo.SplitString('baf93b64-c255-4dda-b9dc-3f7438b49335-mkttrg&utm_source=bing&utm_medium=cpc&utm_campaign=MO+-+Payday&utm_term=payday+loan&utm_content=Payday+Loans+(Phrase)', '&') 
where item like '%=%' 

결과 : - - :

는 다음 코드를 사용

enter image description here

+0

작동하지 않습니다. 오류가 발생했습니다. 메시지 208, 수준 16, 상태 1, 줄 26 잘못된 개체 이름 'dbo.SplitString'. – kris

+0

내 대답에 언급 된 링크로 이동하고 먼저 SplitString을 실행하십시오 ... 이것은 링크입니다> http://www.aspsnippets.com/Articles/Split-and-convert-Comma-Separated-Delimited-String-to -Table-in-SQL-Server.aspx –