繁体   English   中英

mysql-如何选择类似记录?

[英]mysql - How select a akin records?

我有一张桌子

name varchar
address varchar
country varchar
city varchar
.....

存储位置地址

例:

name|address|country
HaLong hotel|156 blahblah street|Vietnam
Hotel Ha Long|156 blah blah|Vietnam

上面两行是重复数据。

当用户提交新位置时,我有一个表格。 该代码需要查找类似记录以给出消息(例如:此位置已存在于db中,是使用它还是创建新的?)

如何进行查询以获得类似的记录?

没有大量的工作,“ 156 blahblah street”和“ 156 blah blah”没有足够的共同之处来自动化任何内容,并且不会在单个SQL查询中发生。

尝试3种方法:

1)使用类似Google Maps的地址编码的地址来查找地址,这非常擅长弄清人们在键入“街道”和其他常见错误时的意思是“大道”,因此可以避免大多数拼写错误。 您也可以获取经度/纬度数据以确保其匹配。

2)在地址文本字段上使用自动完成器 当有人输入“ 156 blah”时,它将显示所有匹配项的列表,因此用户将更有可能选择正确的项。

3)使用soundex等实现您自己的语言算法,与地理编码相比,这可能会非常慢。 我会避免使用此选项-听起来很有趣,但这太不切实际了。

在将数据插入数据库之前。 您可以从表格中选择包含当前数据的行。 如果选择查询返回的行数不大于零,则可以确保该信息已经存在,否则可以做进一步的事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM