gpt4 book ai didi

mysql - 使用 SQL 的双向部分搜索

转载 作者:太空宇宙 更新时间:2023-11-03 10:46:44 25 4
gpt4 key购买 nike

我有一个 PHP 代码段,它查找 MySQL 表并返回与给定搜索字符串最接近的 6 个匹配项,包括完全匹配项和部分匹配项。 SQL语句为:

SELECT phone, name FROM contacts_table WHERE phone LIKE :ph LIMIT 6;

使用上面的示例,如果分配了 :ph,例如 %981%,它将返回包含 981 的每个条目,例如9819133333、+917981688888、9999819999 等。但是,是否也可以使用相同的查询返回其值包含在搜索字符串中的所有条目?因此,如果搜索字符串是 12345,它将返回以下所有内容:

  • 123456789(包含搜索字符串)
  • 88881234500(包含搜索字符串)
  • 99912345(包含搜索字符串)
  • 123(包含在搜索字符串中)
  • 45(包含在搜索字符串中)
  • 2345(包含在搜索字符串中)

最佳答案

您可以在数字为 LIKE 列的位置进行查找:

SELECT * FROM `test` 
WHERE '123456' LIKE CONCAT('%',`stuff`,'%')
OR `stuff` LIKE '%123456%';

但是永远不会使用索引,因为索引不能与前面的 % 一起使用。

另一种方法是在内存中创建一个临时表并插入标记化字符串并在临时表上使用 JOIN。这可能比我上面的解决方案慢得多,但它是一个潜在的选择。

关于mysql - 使用 SQL 的双向部分搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30669342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com