【问题标题】:SQL search for containing termsSQL 搜索包含的术语
【发布时间】:2011-02-11 02:59:45
【问题描述】:

是否可以在表中搜索其名称中包含搜索词的记录?

谢谢

【问题讨论】:

  • 你是指表名还是列名?

标签: sql contains


【解决方案1】:

听起来你要找的是LIKE

-- Get all people with phone numbers starting with 920
SELECT * FROM People WHERE PhoneNumber LIKE '920%'

【讨论】:

    【解决方案2】:
    SELECT * FROM `my_table` WHERE name LIKE '%my_search_term%'
    

    SELECT * FROM `my_table` WHERE CONTAINS(name, 'search')
    

    但请注意,LIKE 语句非常昂贵。如果您搜索大量文本,您可能需要考虑使用 Sphinx 作为示例。

    【讨论】:

    • 是的,应该链接它。它非常强大,您从 MySQL 填充 Sphinx 索引(例如,在我工作的地方,我们每 2 小时更新一次 Sphinx),之后非常简单。 PHP中有一个Sphinx客户端:php.net/manual/en/book.sphinx.php 使用非常简单,文本搜索确实比MySQL快。
    【解决方案3】:

    当然。有CONTAINS谓词:

    ... WHERE CONTAINS(name, 'search-term')
    

    还有LIKE 运算符和一些DBMS 允许使用正则表达式。

    【讨论】:

      猜你喜欢
      • 2014-03-13
      • 1970-01-01
      • 2018-11-11
      • 1970-01-01
      • 2011-12-22
      • 1970-01-01
      • 1970-01-01
      • 2016-09-18
      • 2019-03-24
      相关资源
      最近更新 更多