gpt4 book ai didi

mysql - 在未找到给定查询 "champion"的情况下,返回表中存在的 "championship"的最佳方法

转载 作者:行者123 更新时间:2023-11-30 01:24:25 25 4
gpt4 key购买 nike

我有一个很大的 table ,上面有字符串。字段“单词”:

- dog
- champion
- cat
- this is a cat
- pool
- champ
- boots
...

在我的示例中,如果选择查询正在查找给定的字符串“championship”,它将找不到它,因为该字符串不在表中。在这种情况下,我希望查询从表中返回“champion”,即表中以给定单词“championship”开头的最长字符串。可能的匹配(如果找到)是表中冠军、或championshi、或championsh、或champion、...、或cham、或cha、或ch、或C之间最长的匹配。

问题:我想返回表中以给定字符串开头的最长字符串。
我需要高速。有没有办法创建索引和查询以便快速执行查询?

最佳答案

这是一个将返回指定结果的查询:

SELECT t.mycol
FROM mytable t
WHERE 'championship' LIKE CONCAT(t.mycol,'%')
ORDER
BY LENGTH(t.mycol) DESC
LIMIT 1

此查询无法执行索引范围扫描,它必须进行完整扫描,但它可能能够使用索引来满足查询。

如果您可以将搜索限制为需要匹配才能被视为“命中”的有限数量的前导字母,则可以包含另一个谓词。例如,要匹配至少 4 个字符:

SELECT t.mycol
FROM mytable t
WHERE 'championship' LIKE CONCAT(t.mycol,'%')
AND t.mycol LIKE 'cham%'
ORDER
BY LENGTH(t.mycol) DESC
LIMIT 1

--或--

  AND t.mycol >= 'cham' 
AND t.mycol < 'chan'

关于mysql - 在未找到给定查询 "champion"的情况下,返回表中存在的 "championship"的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18177569/

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