2017-09-29 1 views
0

을 분리 해당 Keywords 필드에 가능한 모든 개별 값 목록.TSQL 내가 <code>@Keywords</code>가 포함되어 내 SSRS에서 <code>;</code></p> <p>내 매개 변수 중 하나보고 세미콜론 (;)으로 구분 된 값의 목록을 포함하는 필드 <code>Keywords</code>이 내 쿼리에서 매개 변수

내 쿼리에 다중 값 매개 변수 @Keywords을 전달하고 필드 Keywords 선택한 매개 변수 값 중 하나를 포함하고 있는지 확인하려면 어떻게

?

나는 그들의 개별 키워드 항목에 @KeywordsKeywords을 구분 할 수있는 분할 기능을 가지고 있지만, 어떻게 내 어디 문 내에서이 검사를 수행 할 수 있습니다?

Keywords 예를 corporate finance; compensation; financial markets

@Keywords 예 그 예에서 Accounting,Accounting and Financial Reporting,Agriculture,airlines,corporate finance,compensation,Offshore drilling,Pharmaceuticals,portfolio,anagement

, @Keywords 모두 corporate financecompensation 그래서 내 보고서는 예를 Keywords 필드와 관련된 기록을 표시하는 것입니다 포함되어 있습니다.

@ 키워드의 값이 모두 Keywords 인 경우 해당 레코드가 필요합니다.

답변

0

ResultSet 테이블 선택으로 확장해야 할 수도 있습니다. 개념을 증명할 수 있도록 교차 적용을 사용하면 루핑이나 커서 또는 하위 쿼리없이 값을 분리하는 데 도움이됩니다.

declare @test as table 
(
keywords varchar(100) 
) 
INSERT INTO @test 
VALUES ('corporate finance, compensation, financial markets') 

declare @keywords varchar(100) ='Accounting,Accounting and Financial Reporting,Agriculture,airlines,corporate finance,compensation,Offshore drilling,Pharmaceuticals,portfolio,anagement' 


select i.RecordID as keywords 
from @test a 
cross apply dbo.ReturnTableOfVarchars(a.keywords) i 
INNER JOIN (select * from dbo.ReturnTableOfVarchars (@keywords)) k 
ON k.RecordID=i.RecordID 

제가 작동하는지 알려주세요.

+0

감사합니다. 나는 당신의 ReturnTableofVarchars를 내 자신의 Split 함수로 바꾸었고 결과는 두 목록 사이에 공통적 인 두 가지 값, 거대한 도움이되었습니다. 어떻게하면 내 '어디에서'그것을 평가할 수 있습니까? 이것을 'HAVING COUNT (*)> 1에 넣어야합니까?' – gruff

+0

예가 coutn()이거나 존재할 경우 (위에서 선택하십시오), 문제가 해결되면 @gruff로 표시하거나 해결합니다 –

관련 문제