【问题标题】:How to find longest match in a query sentence using SQL?如何使用 SQL 在查询语句中查找最长匹配?
【发布时间】:2017-09-29 20:51:08
【问题描述】:

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

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

【问题讨论】:

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

标签: php mysql sql string string-matching


【解决方案1】:

使用CONCATLENGTHLIMIT

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 2014-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多