8

我不知道这被称为什么函数,但我正在尝试选择与输出匹配/具有最多字符的行。这是我尝试过的。

select * from table where title like '%alotofcharactershere%' limit 1

以上仅适用于整个单词:alotofcharactershere

我真正想要的是把它分解: alotofcharactershere 并找到一个具有最匹配字符的行。

如果您知道我在说什么,请提供帮助。先感谢您。

4

2 回答 2

1

我一直在研究,我不是 SQL 专家,但我在考虑替换不匹配的字符后按字符长度排序的行。

就像是: SELECT * FROM your_table ORDER BY LENGTH(REGEXP_REPLACE(title, '[^abcdefg]', ''));

2个问题。它与找到的最不同的字符不匹配。所以 aaaa 将比 abc 具有更高的价值。而且我认为您的意思是您希望 abc 具有更高的价值。第二个问题可能是最大的,mySQL 不支持这个正则表达式。而且不确定有什么作用。但我确实找到了这篇文章:https ://launchpad.net/mysql-udf-regexp

虽然我认为一定有一些更简单的东西,而且是开箱即用的东西,但这个答案可能只会引发人们开箱即用的想法。

也可能有一个包含很多连接的解决方案,但这很可能比选择所有内容并在 php(或类似)中排序要慢

于 2012-08-04T16:04:43.190 回答
1

目前尚不清楚您要完成什么,所以我想知道您是否查看过全文搜索。找到相关性的能力可能会给你一些想法或替代方案。

于 2012-08-05T01:11:12.207 回答