我想在列中搜索值,并首先返回以搜索开头的值,然后返回包含该值的任何值。
例如: 搜索: 约翰 约翰·多伊 约翰·库克 约翰尼·阿普尔塞德 比尔·约翰逊 特德·约翰逊 约翰逊夫妇
现在最简单的方法似乎是查询“WHERE Name LIKE 'john%'”,然后再次查询 WHERE Name LIKE '%john%',并合并结果。不过,似乎有一种方法可以在一个查询中执行此操作。有什么帮助吗?
最佳答案
为什么不在字符串两侧使用简单的通配符,而是从提供的字符串开始对结果进行排序
select * from t where col like '%john%' order by col like 'john%' desc
order by col like 'john%' desc
将得到 bool 值 0/1,因此以 john 开头的记录将首先显示,然后返回其他匹配的记录
关于MySQL 搜索字符串首先以 string 开头,但也会返回包含 string 的任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25435735/