Microsoft's documentation for CONTAINS在其示例中包含以下两个条款。
CONTAINS(Name, ' "Mountain" OR "Road" ')
还有......
CONTAINS(Description, ' Aluminum AND spindle ');
请注意,第一个示例将两个搜索项放在双引号内,而第二个示例则不是。我似乎找不到任何地方,它解释了两者之间的区别。
由于未使用FORMSOF(INFLECTIONAL, ...)
或FORMSOF(THESAURUS, ...)
,我只能假设在两种情况下都会对字词进行字面比较。这意味着两个版本都是平等的。那么为什么在第一个例子中将它们包含在双引号中呢?
答案 0 :(得分: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(列,'text *'),全文搜索将星号视为字符并搜索与文本*的完全匹配。> ;