MySQL搜索字符串首先以字符串开头,但也返回包含字符串的任何结果

时间:2014-08-21 20:52:45

标签: mysql string search wildcard

我想在列中搜索值,然后返回以搜索开头的值,然后返回包含它的任何值。

例如: 搜索:约翰 约翰·多伊 约翰库克 约翰尼Appleseed 比尔约翰逊 泰德约翰逊 约翰逊

现在最简单的方法似乎是查询“WHERE Name LIKE'john%'”,然后再次查询WHERE Name LIKE'%john%',并合并结果。似乎在一个查询中可能有一种方法可以做到这一点。有什么帮助吗?

2 个答案:

答案 0 :(得分:1)

为什么不在字符串的两边使用简单的通配符,而是从您提供的字符串开始排序结果

select * from t where col like '%john%' order by  col like 'john%' desc

order by col like 'john%' desc将以布尔值0/1结果,因此将首先显示以john开头的记录,然后返回其他匹配的记录

答案 1 :(得分:0)

您可以像这样执行条件订单

SELECT * 
FROM table 
WHERE Name LIKE '%john%'
ORDER BY 
    CASE WHEN Name LIKE "john%" THEN 1 
         WHEN Name LIKE "%john%" THEN 2
         WHEN Name LIKE "%john" THEN 3 -- # -- you can add more conditions like so
         ELSE 4
    END

DEMO