SQL如何判断LIKE(模式匹配)类型?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/aliankg/article/details/54694444
SQL中可以使用LIKE实现模式匹配,以%作为通配符语法:
(1)'keywords%'以keywords开头
(2)'%keywords'以keywords结尾
(3)'%keywords%'任意位置含有keywords

遇到一个需求,不但要找出模式匹配的子集合,还有知道是哪一种匹配,从头开始?尾部匹配?中间匹配?

使用场景是Android Provider封装了对于数据库的操作,直接返回Cursor。当然,可以在使用Cursor的时候在Java中做二次判断,但这样做架构上不够优美,直接在数据库做计算(SQL层),以增加一个字段的方式封装在Cursor中直接返回,我认为比较好,一来架构清楚,逻辑耦合度低,二来这部分计算可以充分借助数据库的性能优化。研究了一下SQL的语法,最后用类似这样的SQL code完成:


select colA,
         (case
             when colA like 'keywords%' then 'start'
             when colA like '%keywords' then 'end'
             else 'middle'
         end)
         as match_type
from yourtable
where colA like '%keywords%';


这样的语法支持Text和Integer,上面code即Text,Integer类似:
select colA,
         (case
             when colA like 'keywords%' then 90
             when colA like '%keywords' then 80
             else 60
         end)
         as match_score
from yourtable
where colA like '%keywords%';


展开阅读全文

没有更多推荐了,返回首页