背景
包含以下列和数据的表格,例如:
---------------------------------------------------------------------------------
| 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、AddressLine3和Locality中的数据可以是绝对随机的。
要求
检测当前位置,并在学校表中具有以上列的数据库中查找附近的学校。
流程
附近的学校使用谷歌API定位,该API返回学校名称和地址。
例如,返回的数据:
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|..."
如果学校地址是:法里达巴德19区314,这种方法就有问题了。基于,
拆分字符串会在查询中产生314
的搜索条件。因此,地址为法里达巴德31区314的学校也将进行比赛,尽管这些学校相距甚远。
关于如何编写mysql查询以帮助选择正确学校的任何建议。
注意:地址也可以同时包含类似于:"314, Sector 19"
的文本。
听起来你只需要检查前导和尾随逗号:
REGEX "(^|, )(Sector-1|Sector 1|Sector- 1|Old Faridabad|...)(,|$)"