首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Mysql中搜索相似字符串

在Mysql中搜索相似字符串
EN

Stack Overflow用户
提问于 2009-01-29 14:01:10
回答 4查看 210关注 0票数 2

对于如何搜索同一个词,人们有不同的想法。

例如,Tri- Valley,Trivalley,Tri Valley(甚至可能拼写错误)

目前,该搜索是这样完成的

代码语言:javascript
复制
SELECT * FROM `table` WHERE `SchoolDistrict` LIKE '%tri valley%';  

有没有一种简单的方法来说“空格,破折号或没有空格”,而不用写出三个相似的语句?

这似乎很容易做到:

代码语言:javascript
复制
SELECT * FROM `table` WHERE `SchoolDistrict` LIKE '%tri%valley%';

但是只有当初始输入是‘三谷’或‘三谷’时才有效,如果初始输入是‘三谷’我不知道把%放在哪里(理论上,实际上,我知道,因为我们只看了十几个不同的学区,但我想解决更大的问题)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-01-29 14:06:06

如果你有很多拼写错误,你可以考虑使用SOUNDEXSOUNDS LIKE。如果有很多行(或者没有),明智的做法是将SOUNDEX的输出存储在另一个列中。

为了准确起见,我还建议引入一个单独的表,其中包含一个权威的学区列表,并运行一个查询来查找不在该列表中的学区。

票数 3
EN

Stack Overflow用户

发布于 2009-01-29 14:06:18

MySQL有一个名为Sounds的函数。

link text

票数 1
EN

Stack Overflow用户

发布于 2009-01-29 14:28:27

这里的另一种选择是,如果可能的话,将问题从搜索转换到选择。如果您有一组学区,而不是让用户输入自由格式的文本来选择学区,则可以生成一个下拉列表(或一组级联下拉列表,如果列表很大,例如按县,则按学区),并允许用户选择适当的学区。将此选项用于“搜索”和数据输入,以消除非规范条目。显然,只有当您可以枚举所有条目时,这才有效。

或者,您可以允许用户选择以开始或包含类型搜索,并根据所选的搜索类型简单地生成适当的SQL ('tri%‘或'%tri%')。如果用户知道搜索类型是以开头或包含,他们可能会调整他们的搜索字符串,直到它产生他们需要的结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/491682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档