【问题标题】:Use of contains() in sql server在 sql server 中使用 contains()
【发布时间】:2013-06-14 06:34:02
【问题描述】:

我的表名 Product 包含 3 列:

Product-id
name
Price

name 列中,所有产品名称都存在。

例如:1340 GPS、1340T GPS等

当我写作时

select top 10 * from product where contains(name,'1340');

结果 1 行 1340 GPS

但是当我搜索时

select top 10 * from product where name like '%1340%';

那么结果就是1340 GPS and 1340T GPS

实际上我的要求是我将使用contains(),但它必须显示像LIKE 运算符这样的两行。

怎么做:?

请帮忙

提前致谢

【问题讨论】:

  • 你为什么坚持使用contains()
  • 我需要全文搜索
  • 有什么办法可以解决上述问题还是不可能的???????
  • 我用来搜索产品的上述查询。如果我使用 like 运算符,则包含()将花费更多时间,而且我还需要全文搜索。所以我需要包含()我的观点。
  • 我在查询中使用了内部连接和其他连接的数量。有没有其他方法可以解决这个问题,欢迎

标签: sql-server full-text-search


【解决方案1】:

这是执行此操作的直接方法。您可以在包含与 like 运算符相同的语法之前使用“*”。但是您需要在搜索字符串之前和之后使用双引号。检查以下查询:

SELECT *
FROM product
WHERE CONTAINS(name,'"*1340*"');

它肯定会起作用。

【讨论】:

  • 全文搜索不需要使用*。
  • 请注意:您不能在 Contains 中添加 * 前缀。它仅在本例中有效,因为 1340 是单词的开头。例如,如果是 T1340,这是行不通的。
  • 不工作,使用 contains() 时不显示记录
【解决方案2】:

select * from product where FREETEXT (product.,'"1340"')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-28
    • 2016-01-03
    • 2013-09-29
    • 2011-11-22
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    相关资源
    最近更新 更多