如何在MySQL中找到左边的最佳匹配

时间:2013-12-26 05:56:47

标签: mysql sql database

假设我有一个字符串列表

DF01 
FR10
FR12 
RT10
FRFF

我得到号码FR10

我希望查询得到FR10,这是左边最好的匹配。有没有可以做到的查询?

我试过下面的查询,但没有运气。

SELECT * FROM table 
WHERE str_col LIKE CONCAT('FR10', '%');

那么如何查询以获得以下顺序的结果(最佳匹配)。

FR10
FR12 
FRFF

1 个答案:

答案 0 :(得分:3)

这样的事情怎么样?

SELECT *
  FROM table1
 WHERE str_col LIKE 'FR10%'
    OR str_col LIKE 'FR1%'
    OR str_col LIKE 'FR%'
    OR str_col LIKE 'F%'
 ORDER BY 4 * (str_col LIKE 'FR10%') +
          3 * (str_col LIKE 'FR1%') +
          2 * (str_col LIKE 'FR%') +
          1 * (str_col LIKE 'F%') DESC,
          CHAR_LENGTH(str_col),
          str_col

输出:

| STR_COL |
|---------|
|    FR10 |
|    FR12 |
|    FRFF |

这是 SQLFiddle 演示