使用 CONTAINS 谓词

可以使用 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 这样的词,这些词可能经常出现,但是在检索特定文本时没有真正的帮助。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值