我正在开发一个搜索功能来搜索型号,我试图让 MySQL 向我显示与我所要求的类似的结果,但 LIKE %$var% 不会这样做。
示例(我们将表称为“tbl_models”):
id model
+-------+--------------------+
| 1 | DV6233SE |
| 2 | Studio 1440 |
| 3 | C762NR |
+-------+--------------------+
使用我当前使用的搜索框进行搜索时:
SELECT id, model FROM tbl_models WHERE model LIKE %$var% ORDER BY id DESC
如果我搜索“C7”,它会返回“C762NR”,这很好,但是假设我要搜索“C760”或“C700”或拼写错误“C726NR”? MySQL(或 PHP、JS、jQuery)中是否有一种方法可以扩展返回结果的限制以包括不同的变化或接近的匹配?
我也不是在找人为我写它,只要朝正确的方向插入就会非常有帮助!
最佳答案
如果我要对你的问题应用逻辑,我会这样做。
寻找接近的匹配 -
我将采用用户最初键入的输入参数。例如'ABCDEF' 然后,我将通过将输入参数中的每个字符替换为“_”来创建多个参数。
即'ABCDEF' 将为我生成以下输入参数。
“_BCDEF”、“A_CDEF”、“AB_DEF”、“ABC_EF”、“ABCD_F”、“ABCDE_”
然后我将输入参数传递给SQL查询并使用OR运算来查找数据。
上述方法会给我相差 1 个字符的单词。
我可以稍微扩展一下,用 UNDERSCORE 替换 2 个字符,然后用 3 个字符替换 4 个字符,依此类推。
我最多需要替换多少个字符,应该取决于字符串的长度。
关于php - 在 MySQL 中,如何将包含 "similar"数据的行返回到我所请求的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14421846/