刚在ITPUB上看到的一条SQL

要求:

我现在有一个白名单表
id             type         keyword
4788        01        4
4790        01        5
4792        01        6
4794        01        7
4798        01        9
4968        03        娃娃鱼
4781        01        1
4783        01        人力资源
4785        01        3
4938        02        嘻嘻哈哈
4417        03        pdf
4423        01        哈哈
5702        03        拉拉
2941        02        焦点切换(关键字)
1        01        CTAIX
1656        03        国税
5032        02        切换
5788        01        kayi

现在我需要判断 我的数据是否与 keyword字段中的 匹配
比如 我有一个数据 '人力资源管理制度.doc'   我如何去写sql 去 取出 表中4783        01        人力资源 记录呢?
解答:

具体语句如下:

select  id,
        type,
        keyword
from
(select id,
        type,
        keyword,
        dense_rank() over(order by length(&inputstr) - length(replace((translate(&inputstr, keyword, ' ')), ' ', '')) desc) rn
  from REC_APP_FOCUS)
where rn = 1;


举例如下:

SQL> select * from REC_APP_FOCUS;

        ID TYPE                 KEYWORD
---------- -------------------- ------------------------------
      4783 01                   人力资源
      4785 01                   人力
      4788 01                   4
      4968 03                   娃娃鱼
         1 01                   CTAIX

--&inputstr = '人力资源管理制度.doc'

SQL> select  id,
  2          type,
  3          keyword
  4  from
  5  (select id,
  6          type,
  7          keyword,
  8          dense_rank() over(order by length('人力资源管理制度.人力doc') - length(replace((translate('人力资源管理制度.人力doc', keyword, ' ')), ' ', '')) desc) rn
  9    from REC_APP_FOCUS)
10  where rn = 1;

        ID TYPE                 KEYWORD
---------- -------------------- ------------------------------
      4783 01                   人力资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值