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

时间:2017-05-02 10:50:57

标签: php mysql sql string string-matching

假设我有一张这样的表:

----------------------------------
|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,以便我不需要将整个表存储到内存中?

1 个答案:

答案 0 :(得分:1)

CONCATLENGTHLIMIT

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