SQL LIKE子句匹配最近的记录

时间:2015-02-04 12:17:14

标签: mysql

我正在运行此SQL查询以匹配数据库中的数据记录:

SELECT * from billing_match_table WHERE 'Exchange Mailbox plus Outlook' LIKE CONCAT(description, '%');

所以在表格中有两行描述:

Exchange Mailbox

Exchange Mailbox plus Outlook

因此运行此查询将返回两个记录,但我希望能够匹配最接近的记录

我使用CONCAT这种方式的原因是因为我也有这样的记录:

需要匹配Non-Geographic Number 0843123456

Non-Geographic Number 0843

需要匹配Non-Geographic Number 0845123456

Non-Geographic Number 0845

那么如何将这些匹配到数据库中最接近的记录而不仅仅是返回的第一行

1 个答案:

答案 0 :(得分:3)

我认为"最接近"记录将具有与常量字符串匹配的最长描述。如果是这样的话:

SELECT *
FROM billing_match_table
WHERE 'Exchange Mailbox plus Outlook' LIKE CONCAT(description, '%')
ORDER BY length(description) desc
LIMIT 1;