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

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%';


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值