来自于:caomiao2006
    我们知道,要模糊查询数据表的话,一般会用到Like语法,而对数据表相应的字段进行全文索引之后,还可以使用速度更快的Contains方法、

    但是,我发现,分别使用这两个方法查询出来的结果不一致
    select CompanyName from T_Enterprise where CompanyName like ‘%CCC%’

    查询结果:
    CompanyName
    ———————————————— 可以查到
    CCCCCCCCC

    select CompanyName from T_Enterprise where Contains(CompanyName,’CCC’)
    查询结果:
    CompanyName
    ————————————————查不到数据

    备注:该表已经进行全文索引!
    再换另外一个关键字来查询下、
    select COUNT() from T_Enterprise where CompanyName like ‘%公司%’
    select COUNT(
    ) from T_Enterprise where Contains(CompanyName,’公司’)
    结果是使用Contains查询的记录数比Like少!

    1. mssql全文检索CONTAINS的用法.
    2. 全文索引——CONTAINS 语法
    3. 我们通常在 WHERE 子句中使用 CONTAINS ,就象这样:SELECT * FROM table_name WHERE CONTAINS(fullText_column,'search contents')。
    4. 我们通过例子来学习,假设有表 students,其中的 address 是全文本检索的列。
    5. 1. 查询住址在北京的学生
    6. SELECT student_id,student_name
    7. FROM students
    8. WHERE CONTAINS( address, 'beijing' )
    9. remark: beijing是一个单词,要用单引号括起来。
    10. 2. 查询住址在河北省的学生
    11. SELECT student_id,student_name
    12. FROM students
    13. WHERE CONTAINS( address, '"HEIBEI province"' )
    14. remark: HEBEI province是一个词组,在单引号里还要用双引号括起来。
    15. 3. 查询住址在河北省或北京的学生
    16. SELECT student_id,student_name
    17. FROM students
    18. WHERE CONTAINS( address, '"HEIBEI province" OR beijing' )
    19. remark: 可以指定逻辑操作符(包括 AND AND NOTOR )。
    20. 4. 查询有 '南京路' 字样的地址
    21. SELECT student_id,student_name
    22. FROM students
    23. WHERE CONTAINS( address, 'nanjing NEAR road' )
    24. remark: 上面的查询将返回包含 'nanjing road''nanjing east road''nanjing west road' 等字样的地址。
    25. A NEAR B,就表示条件: A 靠近 B
    26. 5. 查询以 '湖' 开头的地址
    27. SELECT student_id,student_name
    28. FROM students
    29. WHERE CONTAINS( address, '"hu*"' )
    30. remark: 上面的查询将返回包含 'hubei''hunan' 等字样的地址。
    31. 记住是 *,不是 %。
    32. 6. 类似加权的查询
    33. SELECT student_id,student_name
    34. FROM students
    35. WHERE CONTAINS( address, 'ISABOUT (city weight (.8), county wright (.4))' )
    36. remark: ISABOUT 是这种查询的关键字,weight 指定了一个介于 0~1之间的数,类似系数(我的理解)。表示不同条件有不同的侧重。
    37. 7. 单词的多态查询
    38. SELECT student_id,student_name
    39. FROM students
    40. WHERE CONTAINS( address, 'FORMSOF (INFLECTIONAL,street)' )
    41. remark: 查询将返回包含 'street''streets'等字样的地址。
    42. 对于动词将返回它的不同的时态,如:dry,将返回 drydrieddrying 等等。

    contains 是全文索引的函数吧,
    1、全文索引是以词为单位的,
    2、全文索引中有干扰词

    例如 你contains 查询包含上海的 可以查出来,但是你使用contains 查询 上 就可能什么也查不出来