适用于mysql查询的where子句

时间:2014-06-25 16:54:54

标签: php mysql sql

背景

包含以下列和数据的表,例如:

---------------------------------------------------------------------------------
| Address | AddressLine2 | AddressLine3 | Locality | District | State | Country |
---------------------------------------------------------------------------------
|Sector-12|              |              |          | Faridabad| Har   | IN      |
| 311     |              |              |  Sector 3| Faridabad| Har   | IN      |
|Sector-1,|              |              |          | Faridabad| Har   | IN      |
|Plot 31  |              |              | Old Fari | Faridabad| Har   | IN      |
|         |              |              |dabad     |          |       |         |
---------------------------------------------------------------------------------

我在这里想要描述的是Address,AddressLine2,AddressLine 3,Locality中的数据可以是绝对随机的。

要求

使用学校表格中的上述列检测当前位置并查找数据库中附近的学校。

过程

使用Google API查找附近的学校,该API返回学校的名称及其地址。

E.g。返回数据:

Name: St. Albans School
Address: Sector 1, Old Faridabad, Faridabad, Har, IN

预期结果: 地址为Sector-1且地区为Old Faridabad

的学校

<小时/> 区,州和国家/地区将使用当前位置自动获取。

为了处理地址的其余部分,目前正在进行的是学校地址基于,爆炸,并生成了使用IN的mysql查询。

示例查询:

Select * from Schools where Address IN ('Sector-1', 'Sector 1', Sector- 1'. 'Old Faridabad', ...)

然而IN query问题是: - 如果地址列包含"Sector-1,"之类的字符串,则匹配失败。

另一种方法:

Select * from Schools where Address REGEX "Sector-1|Sector 1|Sector- 1|Old Faridabad|..."

这种方法存在问题,如果学校地址如下:314,Sector 19,Faridabad。根据{{​​1}}拆分字符串会在查询中生成,的搜索条件。因此,地址:314,第31区,法里达巴德的学校也会产生一场比赛,尽管这些学校相距甚远。

有关如何编写mysql查询的任何建议,这有助于选择正确的学校。

注意:地址还可以包含以下文字:314

1 个答案:

答案 0 :(得分:0)

听起来你只需要检查前导和尾随逗号:

REGEX "(^|, )(Sector-1|Sector 1|Sector- 1|Old Faridabad|...)(,|$)"
相关问题