gpt4 book ai didi

regex - 在 MySQL (InnoDB) 中查找最佳匹配行

转载 作者:可可西里 更新时间:2023-11-01 06:30:00 25 4
gpt4 key购买 nike

我有以下测试字符串 engine/mail/key 和一个如下所示的表:

+-------------+
| query |
+-------------+
| engine |
| engine/pdf |
| engine/mail |
+-------------+

我想找到最匹配的行。最佳匹配由字符串/行开头最匹配的字符指定。

我构建了一个 RegExp,但它当然会匹配所有行,并且不会给我任何关于匹配最多字符/部分的信息。
正则表达式:^engine(/mail(/key)?)?

关于像这样使用 MySQL 的 FIND_IN_SET 函数,我有另一个想法:

`FIND_IN_SET(query,'engine,engine/mail,engine/mail/key')`

并根据输出结果排序。

这会起作用,但无论如何都不是一个好的解决方案。有人对此有更好的想法吗?

最佳答案

只需使用 LIKE,但与您可能习惯的相反。

select query
from table1
where 'engine/mail/key' like concat(query,'%')
order by length(query) desc
limit 1

结果:

mysql> select * from query;
+-------------+
| query |
+-------------+
| engine |
| engine/pdf |
| engine/mail |
+-------------+
3 rows in set (0.00 sec)

mysql> select query from query
where 'engine/mail/key' like concat(query,'%')
order by length(query) desc
limit 1;
+-------------+
| query |
+-------------+
| engine/mail |
+-------------+
1 row in set (0.01 sec)

关于regex - 在 MySQL (InnoDB) 中查找最佳匹配行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2363858/

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