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

表a学号姓名331王小256张三表b姓名成绩张三大80王小70王小华60如果b.姓名包含a.姓名就把成绩取出来。应该怎么写?selecta.*,b.成绩fromaleft... 表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)
展开
 我来答
onigiri
2011-02-14 · TA获得超过142个赞
知道小有建树答主
回答量:174
采纳率:0%
帮助的人:134万
展开全部
如果b.姓名 包含 a.姓名 就把成绩取出来。
select a.学号,a.姓名,b.成绩 from a,b
where instr(b.姓名,a.姓名)>0;
第二种没必要啊,第一种方法取A表姓名很好取。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
roller76
2011-02-13 · TA获得超过2889个赞
知道小有建树答主
回答量:1992
采纳率:0%
帮助的人:1273万
展开全部
一定要用like。 SELECT * FROM [user] '%%%'随你加多少%都是查找所有 不能写,like通配符必须有查找的特定值 我现在想查出来所有的记录
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nawenwei
2011-02-14
知道答主
回答量:54
采纳率:0%
帮助的人:19.6万
展开全部
可以试着写个匿名块,然后用动态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;
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wh_meanray
2011-02-13
知道答主
回答量:73
采纳率:0%
帮助的人:0
展开全部
select a.*,b.成绩 from a left join b on b.姓名 =a.姓名
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wutian4567268
推荐于2018-03-22 · TA获得超过446个赞
知道小有建树答主
回答量:375
采纳率:50%
帮助的人:189万
展开全部
like匹配符有:
%:0个或多个任意字符
_:一个任意字符
like '%a' :以a结尾的字符串
like 'a%' :以a开始的字符串
like '%a%' :包含a开始的字符串
下划线类似
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式