Php 如何使用SQL在查询语句中查找最长匹配?

Php 如何使用SQL在查询语句中查找最长匹配?,php,mysql,sql,string,string-matching,Php,Mysql,Sql,String,String Matching,假设我有一张这样的桌子: ---------------------------------- |id |phrase ---------------------------------- |1 |real |2 |testing |3 |real message |4 |testing message |5 |special testing message 目标是查找查询语句中最长匹配项的id。例如,查询sentense这是一条测试消息应该返回4 我将PHP与MySQL结合使用,因

假设我有一张这样的桌子:

----------------------------------
|id |phrase
----------------------------------
|1  |real
|2  |testing
|3  |real message
|4  |testing message
|5  |special testing message
目标是查找查询语句中最长匹配项的id。例如,查询sentense
这是一条测试消息
应该返回
4


我将PHP与MySQL结合使用,因此,如果单独使用SQL太复杂,可以将部分操作切换到PHP。目前,我正在获取整个表,并在PHP上逐个执行正则表达式,但如果表变大,则效率低下。有没有一种方法可以将一些工作负载切换到SQL,这样我就不需要将整个表存储到内存中?

使用
CONCAT
LENGTH
LIMIT

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

尝试LEN()函数@JoãoPaulodeLima LEN()如何帮助解决这个问题?对不起,cytsunny。事实上我以为你想得到最长的短语。但现在我发现它需要和你的句子相匹配。