人们对于如何搜索相同的词有不同的想法。
例如,Tri-Valley,Trivalley,Tri Valley(甚至可能有不正确的拼写)
当前,搜索是这样完成的>>
SELECT * FROM `table` WHERE `SchoolDistrict` LIKE '%tri valley%';
是否有一种简单的方法可以说'空格破折号或没有空格'而无需写出三个类似的语句?
似乎很容易做到:
SELECT * FROM `table` WHERE `SchoolDistrict` LIKE '%tri%valley%';
但是仅当初始输入为'tri-valley'或'tri valley'时,此方法才有效。如果初始输入为'trivalley',我不知道将%放在何处(理论上,实际上,我这样做,只看了十几个不同的学区,但我想解决更大的问题)
人们对于如何搜索相同的词有不同的想法。例如Tri-Valley,Trivalley,Tri Valley(甚至可能有不正确的拼写)当前,搜索是通过SELECT * ...
您可以考虑使用SOUNDEX,如果拼写错误很多,可以考虑使用SOUNDS LIKE。如果您有很多行(甚至没有),将SOUNDEX
的输出存储在另一列中可能是明智的。
MySQL有一个叫做Sounds like的功能。
这里的另一种选择是将问题从搜索中重选为可能的问题。如果您有一组学区,则生成一个下拉列表(如果列表很大,例如按县,然后按学区,则级联下拉列表),而不是让用户输入自由格式的文本来选择学区。用户选择适当的一个。将其用于“搜索”和数据输入以消除非规范的输入。显然,这仅在您可以枚举所有条目时才有效。
您发布的第二条语句应该可以解决问题: