1

我正在LIKE使用OR具有多个关键字的条件进行搜索。我想知道是否有可能获得搜索结果并为该结果使用关键字。

SELECT * FROM `LOCATIONS` WHERE `location_name` LIKE '%United Kingdom%' OR `location_name` LIKE '%France%';

查询得到的是两个关键字的匹配结果,我想得到匹配是从哪个关键字这样的!

location_name                 usedKeyword

United Kingdom UK             United Kingdom

Lille, France                 France

London, United Kingdom        United Kingdom

如果两个关键字的 location_name 匹配,我可能知道还有一个问题。我真的不知道。这个怎么做。

例如,“英国和法国”是位置名称

你为什么要这样做?

您可能有这个问题,我尝试了所有可能的方法来获取位置国家名称。我有带有代码和名称的国家/地区列表。使用它我喜欢获取位置名称

其他几个实验

  1. Zend lucene中的反向短语搜索
  2. 位置搜索查询问题

PS:我知道,我可以为每个国家单独运行查询。我对城市做同样的事情意味着成千上万,为了尽量减少查询数量,我正在寻找替代方案。

4

1 回答 1

1

使用CASE表达式:

SELECT *,
       CASE WHEN location_name LIKE '%United Kingdom%'
            THEN 'United Kingdom'
            WHEN location_name LIKE '%France%'
            THEN 'France'
       END usedKeyword
FROM `LOCATIONS`
WHERE `location_name` LIKE '%United Kingdom%'
   OR `location_name` LIKE '%France%';

另请参阅更正的WHERE子句。您的WHERE子句将返回所有行。

于 2013-07-16T06:43:20.620 回答