oracle中如何使用like来进行模糊匹配

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle中如何使用like来进行模糊匹配相关的知识,希望对你有一定的参考价值。

表a
学号 姓名
331 王小
256 张三

表b
姓名 成绩
张三大 80
王小 70
王小华 60

如果b.姓名 包含 a.姓名 就把成绩取出来。应该怎么写?
select a.*,b.成绩 from a left join b on b.姓名 like '%'||a.姓名||'%' 这么写是不是有问题?求高手指教。。。
或者是否有甚么写法可以,直接取B表姓名字符串,长度为a表姓名字符串的长度呢? a.姓名 in (select left(姓名,lenth(a.姓名)),成绩 from b)

参考技术A 如果b.姓名 包含 a.姓名 就把成绩取出来。
select a.学号,a.姓名,b.成绩 from a,b
where instr(b.姓名,a.姓名)>0;
第二种没必要啊,第一种方法取A表姓名很好取。
参考技术B 一定要用like。 SELECT * FROM [user] '%%%'随你加多少%都是查找所有 不能写,like通配符必须有查找的特定值 我现在想查出来所有的记录 参考技术C 可以试着写个匿名块,然后用动态sql循环处理。
declare
begin
for v_str in (select name from a) loop
EXECUTE immediate 'inset into temp_XXX -- 临时结果表
from b
where b.name like '''%'||v_str.name||'%''';
end loop;
end;
参考技术D select a.*,b.成绩 from a left join b on b.姓名 =a.姓名 第5个回答  推荐于2018-03-22 like匹配符有:
%:0个或多个任意字符
_:一个任意字符
like '%a' :以a结尾的字符串
like 'a%' :以a开始的字符串
like '%a%' :包含a开始的字符串
下划线类似

ORACLE多表模糊查询问题

参考技术A 子查询中是用字段去匹配的,字段和字段比较是不能用like的,只有字段和字符串比较的时候才能用like,这里如果一定要模糊匹配,应该用instr函数,改成where
instr(a.t_id,id)>0,但这种方法只能去模糊匹配一整段,无法实现像like那样的分段模糊匹配~

以上是关于oracle中如何使用like来进行模糊匹配的主要内容,如果未能解决你的问题,请参考以下文章

ORACLE多表模糊查询问题

求助oracle like%.%模糊查询优化

Hbase能模糊查询吗,类似like

oracle两表中的两列进行模糊匹配的方法

oracle like模糊查询简单用法

如何提高oracle模糊查询的性能?