zoukankan      html  css  js  c++  java
  • CONTAINS

    CONTAINS全文搜索函数

    1. 查询住址在北京的学生
    SELECT student_id,student_name
    FROM students
    WHERE CONTAINS( address, 'beijing' )

    <contains_search_condition> 属于 nvarchar . 将另一个字符数据类型用作输入时,将发生隐式转换。 不能使用大型字符串数据类型 nvarchar(max) 和 varchar(max)。 在下面的示例中,@SearchWord 变量(被定义为 varchar(30))导致 CONTAINS 谓词中发生隐式转换。

    SQL
    USE AdventureWorks2012;  
    GO  
    DECLARE @SearchWord varchar(30)  
    SET @SearchWord ='performance'  
    SELECT Description   
    FROM Production.ProductDescription   
    WHERE CONTAINS(Description, @SearchWord);  
    

    由于“参数截取”跨转换无效,因此请使用 nvarchar 以获得更好性能 。 本示例将 @SearchWord 声明为 nvarchar(30)

    SQL
    USE AdventureWorks2012;  
    GO  
    DECLARE @SearchWord nvarchar(30)  
    SET @SearchWord = N'performance'  
    SELECT Description   
    FROM Production.ProductDescription   
    WHERE CONTAINS(Description, @SearchWord);  


    CONTAINS 语法 
    我们通常在 WHERE 子句中使用 CONTAINS ,就象这样:SELECT * FROM table_name WHERE CONTAINS(fullText_column,'search contents')。 

    我们通过例子来学习,假设有表 students,其中的 address 是全文本检索的列。 
    1. 查询住址在北京的学生 
    SELECT student_id,student_name 
    FROM students 
    WHERE CONTAINS( address, 'beijing' ) 
    remark: beijing是一个单词,要用单引号括起来。 

    2. 查询住址在河北省的学生 
    SELECT student_id,student_name 
    FROM students 
    WHERE CONTAINS( address, '"HEIBEI province"' ) 
    remark: HEBEI province是一个词组,在单引号里还要用双引号括起来。 

    3. 查询住址在河北省或北京的学生 
    SELECT student_id,student_name 
    FROM students 
    WHERE CONTAINS( address, '"HEIBEI province" OR beijing' ) 
    remark: 可以指定逻辑操作符(包括 AND ,AND NOT,OR )。 

    4. 查询有 '南京路' 字样的地址 
    SELECT student_id,student_name 
    FROM students 
    WHERE CONTAINS( address, 'nanjing NEAR road' ) 
    remark: 上面的查询将返回包含 'nanjing road','nanjing east road','nanjing west road' 等字样的地址。 
              A NEAR B,就表示条件: A 靠近 B。 

    5. 查询以 '湖' 开头的地址 
    SELECT student_id,student_name 
    FROM students 
    WHERE CONTAINS( address, '"hu*"' ) 
    remark: 上面的查询将返回包含 'hubei','hunan' 等字样的地址。 
              记住是 *,不是 %。 

    6. 类似加权的查询 
    SELECT student_id,student_name 
    FROM students 
    WHERE CONTAINS( address, 'ISABOUT (city weight (.8), county wright (.4))' ) 
    remark: ISABOUT 是这种查询的关键字,weight 指定了一个介于 0~1之间的数,类似系数(我的理解)。表示不同条件有不同的侧重。 

    7. 单词的多态查询 
    SELECT student_id,student_name 
    FROM students 
    WHERE CONTAINS( address, 'FORMSOF (INFLECTIONAL,street)' ) 
    remark: 查询将返回包含 'street','streets'等字样的地址。 
             对于动词将返回它的不同的时态,如:dry,将返回 dry,dried,drying 等等。 

    以上例子都使用英文,不使用中文是因为有的查询方式中文不支持,而且我的计算机是英文系统。 
  • 相关阅读:
    WHERE col1=val1 AND col2=val2;index exists on col1 and col2, the appropriate rows can be fetched directly
    MySQL 交集 实现方法
    MBProgressHUD的使用
    Xcode4 使用 Organizer 分析 Crash logs(转)
    SimpleXML 使用详细例子
    PHP的XML Parser(转)
    iPhone,iPhone4,iPad程序启动画面的总结 (转)
    Pop3得到的Email 信件格式介绍
    yii总结
    隐藏Tabbar的一些方法
  • 原文地址:https://www.cnblogs.com/wfy680/p/11973685.html
Copyright © 2011-2022 走看看