2009-09-10 4 views
0

잘 작동하는 문서 제목 내에서 여러 키워드를 검색 할 수있는 다음 코드가 있습니다. 나는 지금 각 제목 행에서 발견 된 키워드의 수와 자손 방식의 순서를 보여주는 컬럼을 원한다. 2찾은 키워드 수별 표 정렬

연간 휴가 정책 - - 1

키워드

출산 휴가 정책을 발견 -

이름 : 나는 "출산 떠나"찾고 있어요 예를 들어 나는 이런 식으로 뭔가를 얻어야한다

산모를위한 출산 상담 - 1

호프, 많은 감사!

Dim s As String = TextBox1.Text 

    Dim SqlQuery As String = "SELECT Doc_LibraryTable.DocID, Doc_LibraryTable.DocName, Doc_LibraryTable.DocType WHERE Doc_LibraryTable.DocType = DocType" 

    Dim ints As String() = s.Split(" ") 
    Dim i As Integer 

    If UBound(ints) >= 1 Then 
     SqlQuery += " AND (Doc_LibraryTable.DocName LIKE '%" + ints(0) + "%'"  

     For i = 1 To UBound(ints) 
      If Not ints(i) = "of" And Not ints(i) = "the" And Not ints(i) = "in" And Not ints(i) = "or" Then 
       SqlQuery += " OR Doc_LibraryTable.DocName LIKE '%" 
       SqlQuery += ints(i) + "%'" 
      End If 
     Next 



    ElseIf UBound(ints) < 1 Then 
     For i = 0 To UBound(ints) 
      SqlQuery += " AND (Doc_LibraryTable.DocName LIKE '%" 
      SqlQuery += ints(i) + "%" 
     Next 

    End If 

    If UBound(ints) >= 1 Then 
     SqlQuery += ")" 
    ElseIf UBound(ints) < 1 Then 
     SqlQuery += "')" 
    End If 

    SqlDataSource2.SelectCommand = SqlQuery 
    GridView1.DataSource = SqlDataSource2 

답변

0

당신은 내 루프에 SELECT 절을 수정하고 CASE 문을 사용하여이 작업을 수행 할 수 있습니다 예 :

Dim SqlQuery As String = "SELECT Doc_LibraryTable.DocID, Doc_LibraryTable.DocName, Doc_LibraryTable.DocType, " 
Dim sep as String = "" 
For i = 0 To UBound(ints) 
    SqlQuery += sep + "CASE WHEN Doc_LibraryTable.DocName LIKE '%" + ints(i) + "%' THEN 1 ELSE 0 END" 
    sep = " + " 
Next 
SqlQuery += " as MatchCount WHERE Doc_LibraryTable.DocType = DocType" 
+0

이것은 내가 찾고 있었던 것이다. 완벽하게 작동합니다, 많은 감사합니다 !!!! –

0

지저분한 조금

select ... 
, len(replace([DocName],'Maternity leave','Maternity leave' + '*')) - len([DocName]) 
    As NameHits 
같은 일을하는 또 다른 방법

다음 코드를 사용하여이를 테스트했습니다. -

set nocount on; 
declare @t as table([name] varchar(10)) 
insert into @t values ('a bb c') 
insert into @t values ('aa bc c') 

declare @find varchar(5) 
set @find = 'bc' 

select 
    *, 
    len(replace([name],@find,@find + '*')) - len(name) 

from @t 
+0

사실 이것은 "출산 휴가"라는 구절을 찾아 내고 적합하지 않을 수도 있습니다! – Rippo