mysql - 选择匹配最多的字符

the*_*man 8 mysql select strip chop

我不知道这个函数调用了什么,但是我试图选择一个匹配/具有最多输出字符的行.这是我尝试过的.

select * from table where title like '%alotofcharactershere%' limit 1
Run Code Online (Sandbox Code Playgroud)

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

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

如果你知道我在说什么,请帮忙.先感谢您.

Ren*_*ené 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(或类似的)中对其进行排序要慢