我想在列中搜索值,然后返回以搜索开头的值,然后返回包含它的任何值。
例如: 搜索:约翰 约翰·多伊 约翰库克 约翰尼Appleseed 比尔约翰逊 泰德约翰逊 约翰逊
现在最简单的方法似乎是查询“WHERE Name LIKE'john%'”,然后再次查询WHERE Name LIKE'%john%',并合并结果。似乎在一个查询中可能有一种方法可以做到这一点。有什么帮助吗?
答案 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