假设我有一张这样的表:
----------------------------------
|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 :(得分:1)
将CONCAT
,LENGTH
与LIMIT
:
SELECT id FROM table
WHERE ('.$search_term.' LIKE CONCAT("%",phrase,"%"))
ORDER BY LENGTH(phrase) DESC LIMIT 1