2012-08-04 92 views
8

我不知道這個函數調用了什麼函數,但我試圖選擇一個匹配輸出的字符數最多的行。這是我嘗試過的。mysql - 選擇最匹配的字符

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

以上只適用於整個字:alotofcharactershere

我真正想要的是它打破它:一個L O,牛逼華氏度] C H A R是C T E [R中文ËR e和發現具有最匹配的字符給一排。

如果你知道我在說什麼,請幫忙。先謝謝你。

回答

1

我一直在挖掘,我不是一個SQL專家,但我正在考慮在字符長度不匹配後用字符長度排序。

喜歡的東西: SELECT * FROM your_table ORDER BY LENGTH(REGEXP_REPLACE(title, '[^abcdefg]', ''));

兩個問題雖然。它與找到的最不同的字符不匹配。所以aaaa的價值會高於abc。我想你的意思是你想讓abc具有更高的價值。 第二個問題可能是最大的,mySQL不支持這個正則表達式。並不確定有什麼。但我確實找到這篇文章:https://launchpad.net/mysql-udf-regexp

儘管我認爲必須有一些更簡單的東西,而且實際上可以直接使用,但這個答案可能只是讓某些人想到開箱即用。

有可能也有很多連接的解決方案,但是這是最有可能慢於選擇一切,這在PHP(或類似)

+0

我的意思是,我們總是可以排列前幾個字符並做一個rlike,但我想嘗試一些新的東西,因此它導致了這一點.... – thevoipman 2012-08-04 16:51:50

1

目前尚不清楚你要完成,所以我不知道什麼樣的你已經看過Full Text Searches。能夠找到相關性可能會給你一些想法或替代方案。