可以使用 CONTAINS 谓词在数据库中检索特定的短语。当然,这样的查询可以使用 LIKE 谓词编写。但是,CONTAINS 的许多形式所提供的文本查询能力比 LIKE 要强。此外,与使用 LIKE 谓词不同的是,CONTAINS 检索总是区分大小写。
说明 对于那些区分大小写的语言(多数都基于拉丁语),全文检索查询以区分大小写的方式执行。但是,在日语中,有许多表示语音的拼字法,其中拼字规范化这一概念与不区分大小写类似,如 kana = 不区分。这种拼字规范化不被支持。
假定想在 Northwind 数据库内进行搜索,以查找短语"bean curd"。如果使用 CONTAINS 谓词,这就是一个很简单的查询。
USE Northwind
GO
SELECT Description
FROM Categories
WHERE Description LIKE '%bean curd%'
GO
或者,使用 CONTAINS:
USE Northwind
GO
SELECT Description
FROM Categories
WHERE CONTAINS(Description, ' "bean curd" ')
GO
CONTAINS 谓词使用的函数表示法中,第一个参数是要检索的列的名称,第二个参数是全文检索条件。检索条件(此例中是"bean curd")可以很复杂,由一个或多个条件组成,这将在后面介绍。
CONTAINS 谓词支持使用复杂的语法在基于字符的列中检索:
- 一个或多个特定的单词和/或短语(简单条件)。
一个单词是一个或多个字符,中间没有空格或标点。有效的短语可以由带空格的多个单词组成,单词之间可以有标点也可以没有标点。例如,croissant 是一个单词,而 café au lait 是一个短语。这样的单词和短语称为简单条件。
- 特定单词的变形(派生条件)。
例如,检索单词 drive 的变形。如果表中的不同行包含单词 drive、drives、drove、driving 和 driven,那么所有这些都将包含在结果集中,因为其中每一个都可以从单词 drive 变形而来。
- 以指定文本(前缀条件)打头的单词或短语。
如果是短语,则该短语内的每个单词都被看作是一个前缀。例如,条件 auto tran* 与 automatic transmission 和 automobile transducer 匹配。
- 使用加权值的单词或短语(加权条件)。
例如,查找一个赋权值比另一个单词高的单词。这将返回排序的查询结果。
- 与另一个单词或短语相近的单词或短语(邻近条件)。
例如,查找一些行,这些行中单词 ice 与 hockey 相邻,或者短语 ice skating 与 ice hockey 相邻。
CONTAINS 谓词可以用 AND 和 OR 将这些条件中的几个结合起来,例如,要查找同一个启用全文的数据库列中所有有 latte 和 New York-style bagel 的行。不仅如此,还可以使用 AND NOT 对条件取反,例如 bagel and not cream cheese。
在使用 CONTAINS 时,记住 SQL Server 将从检索条件中去掉干扰词。干扰词是象 a、and、is 或 the 这样的词,这些词可能经常出现,但是在检索特定文本时没有真正的帮助。
posted on 2009-02-21 16:01
JasonChou 阅读(6627)
评论(0) 编辑 收藏 所属分类:
database