2017-05-02 43 views
-2

讓說我有一個表是這樣的:如何使用SQL在查詢語句中查找最長匹配?

---------------------------------- 
|id |phrase 
---------------------------------- 
|1 |real 
|2 |testing 
|3 |real message 
|4 |testing message 
|5 |special testing message 

的目標是找到最長匹配的ID在一個查詢語句。例如,詢問句子This is a testing message應返回4

我在PHP中使用MySQL,所以如果單獨在SQL中執行起來太複雜,部分操作可以切換到PHP。目前我正在將整個表格全部取出,並在PHP上逐一執行正則表達式,但如果表格變大,效率會很低。有沒有辦法將一些工作負載切換到SQL,以便我不需要將整個表存儲到內存中?

+0

嘗試LEN()函數。 [鏈接](https://www.w3schools.com/sqL/sql_func_len.asp) –

+0

@JoãoPaulodeLimaLEN()如何解決此問題? – cytsunny

+0

對不起cytsunny。其實我只是想要得到最長的短語。但現在我發現它需要符合你的說法。 –

回答

1

使用CONCATLENGTHLIMIT

SELECT id FROM table 
WHERE ('.$search_term.' LIKE CONCAT("%",phrase,"%")) 
ORDER BY LENGTH(phrase) DESC LIMIT 1