【问题标题】:SQL Server Full-Text search - get total field valueSQL Server 全文搜索 - 获取总字段值
【发布时间】:2015-09-10 06:09:48
【问题描述】:

假设我有下表“Addresses”:

+----+-------------+---------------+------------------+
| ID | CompanyName |    Street     |     City         |
+----+-------------+---------------+------------------+
|  1 | Salvador    | Hollywood 123 | Paradise City    |
|  2 | Zer0        | Avenue 34     | Opportunity City |
+----+-------------+---------------+------------------+

如果我进行全文搜索,例如:

SELECT * FROM Addresses WHERE CONTAINS(*, 'Salv')

能不能回来

  • 列的名称,其中包含建立的值(在本例中为“CompanyName”)
  • 列的完整值,其中包含建立值(在本例中为“Salvador”

【问题讨论】:

标签: sql sql-server contains


【解决方案1】:

我可以建议:

 SELECT 
      *,
      CASE WHEN CONTAINS(CompanyName, 'Salv') THEN 'CompanyName'
           WHEN CONTAINS(Street, 'Salv') THEN 'Street'
           WHEN CONTAINS(City, 'Salv') THEN 'City'
      END As ColumnName,
      CASE WHEN CONTAINS(CompanyName, 'Salv') THEN CompanyName
           WHEN CONTAINS(Street, 'Salv') THEN Street
           WHEN CONTAINS(City, 'Salv') THEN City
      END As FullText
 FROM Addresses 
 WHERE CONTAINS(*, 'Salv')

【讨论】:

  • 感谢您的回答!我知道我可以以那种(或类似的)方式做到这一点,但我认为也许会有更简单的方法。
  • 我必须进行非常通用的搜索,所以如果我采用上述方法,我将不得不查找每个表的哪些列是可全文搜索的,然后我才能创建正确的语句。如果没有其他解决方案,我会尝试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-06
  • 1970-01-01
  • 2012-07-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多