300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > SQL 模糊查询后按匹配度排序 CASE WHEN THEN

SQL 模糊查询后按匹配度排序 CASE WHEN THEN

时间:2021-03-17 15:38:28

相关推荐

SQL 模糊查询后按匹配度排序 CASE WHEN THEN

表如下:

SELECT * FROM "table1" where name like '%玉米%'

很明显这个会返回所有的行,因为每行都满足条件

若我想在模糊查询后,进行排序,完全匹配的放在最前面,其余的放后面,可以使用case when then

如:

SELECT * FROM "table1" WHERE name LIKE '%玉米%'ORDER BY (CASEWHEN name='玉米' THEN 1WHEN name like '玉米%' THEN 2WHEN name like '%玉米%' THEN 3WHEN name like '%玉米' THEN 4ELSE 5END)

顺序是:完全匹配>开头匹配>中间匹配>最后匹配

else后面的数字代表剩余的情况则按ELSE后的数字顺序排,5>4,所以剩余的情况会排在最后

查询结果如图:

假设表里有多个字段,同时模糊查询多个字段,但是字段之间也有优先级排序,

比如name>nickname>code,然后再按完全匹配>开头匹配>中间匹配>最后匹配的顺序排

表如下:

那么我可以这样,sql语句如下:

SELECT * FROM "table1" WHERE name LIKE '%yumi%'OR nickname LIKE '%yumi%' OR code LIKE '%yumi%'ORDER BY (CASEWHEN name='yumi' THEN 1WHEN name like 'yumi%' THEN 2WHEN name like '%yumi%' THEN 3WHEN name like '%yumi' THEN 4WHEN nickname='yumi' THEN 5WHEN nickname like 'yumi%' THEN 6WHEN nickname like '%yumi%' THEN 7WHEN nickname like '%yumi' THEN 8WHEN code='yumi' THEN 9WHEN code like 'yumi%' THEN 10WHEN code like '%yumi%' THEN 11WHEN code like '%yumi' THEN 12ELSE 13END)

如图:

这个表格的数据不是十分贴切,但是大致是这样意思

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。