oracle怎么查询关键字,Oracle 搜索关键字

搜索关键字,按空格分开,结果要按精确度从高到低显示,比如:查找的关键字---> ASP JAVA PHP FLEX数据库记录集--->

ID CONTENT

1 JAVA是面对对象的语言2 PHP学起来比JAVA要容易点3 ASP比PHP用起来简单,PHP比JAVA用起来简单4 FLEX做出来的界面好漂亮,而且可以和ASP,PHP,JAVA结合使用5 ASP,PHP用来做网页都不错那么搜索的结果排序应该是ID

4 -->出现了4个关键字3 -->出现了3个关键字2 -->出现了2个关键字5 -->出现了2个关键字1 -->出现了1个关键字

方法:

with a as(

select 1 id,'JAVA是面对对象的语言' content from dual

union all

select 2 id,'PHP学起来比JAVA要容易点 ' content from dual

union all

select 3 id,'ASP比PHP用起来简单,PHP比JAVA用起来简单' content from dual

union all

select 4 id,'FLEX做出来的界面好漂亮,而且可以和ASP,PHP,JAVA结合使用' content from dual

union all

select 5 id,'ASP,PHP用来做网页都不错' content from dual

),

b as(--这个b表就是存放关键字的表

select 'JAVA' content from dual union all

select 'PHP' from dual union all

select 'ASP' from dual union all

select 'FLEX' from dual)

select id || '-->' || '出现了' ||cnt||'个关键字' name

from(select id,sum((case when instr(a.content,b.content)>0 then 1 else 0 end)) cnt

from a,b

group by a.id)

order by cnt desc;

NAME

--------------------------------------------------------------------------------

4-->出现了4个关键字

3-->出现了3个关键字

2-->出现了2个关键字

5-->出现了2个关键字

1-->出现了1个关键字

提供个类似分割关键字 存储到表中的函数

函数的功能将传入的字符串(a,bdc,fde,23,rd,sasp)拆分放到一个表a里

create or replace procedure testpro(v_str varchar2)

as

sqlstr varchar2(4000 );

v_sqlstr varchar2(4000 );

begin

v_sqlstr:=','||v_str||',';

sqlstr:='insert into a

select

substr('''||v_sqlstr||''',instr('''||v_sqlstr||''','','',1,rownum)+1,

instr('''||v_sqlstr||''','','',1,rownum+1)-

instr('''||v_sqlstr||''','','',1,rownum)-1) newid

from dual

connect by rownum <= length('''||v_sqlstr||''')

- length(replace('''||v_sqlstr||''', '','', ''''))-1';

execute immediate sqlstr;

--dbms_output.put_line(sqlstr);

end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值