2016-08-31 2 views
-1

분명히 제품 데이터가있는 장바구니가 있습니다. 사용자가 무엇이든 검색 할 수 있습니다.SQL 쿼리는 여러 열에서 여러 단어를 검색합니다.

분명 나는이 두 단어를 찾을 수 이러한 모든 단어를했을 일부는 그들 중 하나 일을 할 것이다 이렇게 많은 기록이있을 것입니다 몇 가지 열이 모바일 아이폰 3G와 같은

.

은 열 이름은, 내가 찾을 열이 말할 수 TitleDescription

의 날이 말을 나누고 내 우려가

title like '%iphone%' or title like '%mobile%' or....으로 검색하기가 매우 쉽습니다 :

은 무엇인가 가장 효과적인 방법 (효율)

나는 제목이나 설명에이 세 가지 키워드가 모두 들어있는 레코드를 원한다. 그들 등등

+1

어떤 데이터베이스가 있습니까? –

+2

DBMS의 전체 텍스트 기능 사용 –

답변

0

MySQL을 사용하는 경우 전체 텍스트 검색 옵션을 제안합니다.

SELECT * FROM items 
    WHERE MATCH (title,description) 
    AGAINST ('mobile' IN NATURAL LANGUAGE MODE); 

또한 관련 전체 텍스트 인덱스를 생성해야합니다 : 다음 official example에서

CREATE FULLTEXT INDEX idx ON items(title,description) 
0

당신이가는 괜찮다면 동적

Declare @SearchFor varchar(max) ='Daily,Production,default' -- any comma delim string 
Declare @SearchFrom varchar(150) ='OD'      -- table or even a join statemtn 
Declare @SearchExpr varchar(150) ='[OD-Title]'    -- Any field or even expression 
Declare @ReturnCols varchar(150) ='[OD-Nr],[OD-Title]'  -- Any field(s) even with alias 

Set @SearchFor = 'Sign(CharIndex('''+Replace(Replace(Replace(@SearchFor,' , ',','),', ',''),',',''','[email protected]+'))+Sign(CharIndex(''')+''','[email protected]+'))' 
Declare @SQL nvarchar(Max) = 'Select * from (Select Distinct'[email protected]+',Hits='[email protected]+' From '[email protected] + ') A Where Hits>0 Order by Hits Desc' 

Exec(@SQL) 

반환

OD-Nr OD-Title     Hits 
3  Daily Production Summary 2  <<< Notice 2 of 3 hits 
6  Default Settings   1 
+0

내 머리 속에 SQL Server가 있어야합니다. –

+0

동적 SQL ... 나는 검색 할 제품이 100,000 개이기 때문에 성능에 대해 매우 우려하고 있습니다 ... 어떻게 동적이고 가장 효율적인 방법없이 할 수 있습니까? –

+0

어떻게 여러 열에서 검색합니까? –

관련 문제