2012-01-25 2 views
3

Microsoft's documentation for CONTAINS 예제에는 다음 두 절이 포함되어 있습니다.SQL Server 전체 텍스트 검색 구문

CONTAINS(Name, ' "Mountain" OR "Road" ') 

또한 ... 두 번째 예는하지 않지만 첫 번째 예제는 따옴표 모두 검색어를 배치하는 것이

CONTAINS(Description, ' Aluminum AND spindle '); 

참고. 나는 둘 사이의 차이점을 설명하는 곳을 찾을 수없는 것 같습니다.

FORMSOF(INFLECTIONAL, ...) 또는 FORMSOF(THESAURUS, ...)이 사용되지 않았기 때문에 두 경우 모두 단어가 문자 그대로 비교된다고 가정 할 수 있습니다. 그것은 두 버전이 동일하다는 것을 의미합니다. 그렇다면 왜 첫 번째 예에서 큰 따옴표로 묶어야합니까?

답변

3

따옴표는 검색 구문에 와일드 카드 또는 여러 단어가 포함 된 경우에만 엄격하게 필요합니다. 검색 구문이 하나의 단어이고 와일드 카드를 사용하지 않으면 엄밀히 말하면 큰 따옴표는 필요하지 않습니다. 그들은이 필요하지 않은 경우 물론

CONTAINS(LastName, 'Anders') --double quotes not required 
CONTAINS(LastName, '"Anders*"') --double quotes required since wildcard used. Match Anders, Anderson, etc 
CONTAINS(Title, '"End of time"') --double quotes required, since multiple words 

은 큰 따옴표는 여전히도 사용할 수 있습니다 와일드 카드를 사용하는 경우 다음

CONTAINS(LastName, '"Anders"') 

따옴표의 필요성에 대한 견적 BOL입니다 :

글자와 별표가 큰 따옴표로 구분되지 않아서 조건부가 CONTAINS (column, 'text *')로 읽히면 전체 텍스트 검색은 별표를 문자로 간주하고 텍스트 *와 일치하는 항목을 검색합니다.

관련 문제