暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 使用LIKE运算符与IN子句

askTom 2017-04-25
1319

问题描述

嗨,目前我们有一个查询,如下所示,

从chk_ppl_val中选择计数 (不同的chk_ppl_val.serialnum) serialnum __ ndv,计数 (不同的chk_ppl_val.individual_id) 个人 _ ndv,其中
(在 (从data_upload中选择不同的string_value,其中id = '5379e360b0c8f9de684') 中的子字符串 (industry_code,1,4))

以上查询pull记录,如果行业代码的前4位与data_upload表中的string_value匹配。现在,而不是前4位匹配,我们需要更改上面的查询以基于string_value字段中的数据驱动。如果string_value包含2位数字,则行业代码应使用该2位数字来拉动类似的匹配,同样,如果它具有3,4,6位数字,则应在industry_code中拉动相应的类似匹配。

请指导我如何实现它。我们是否可以在运算符中有like子句。以下是数据示例。

Legends: IC - Industry code, SV - String_value, CO - current output, EO- Expected output

IC SV CO EO
3145 31 123652 3145
31801 1236 123794 31801
450 45 12984 450
12366 678 12366 12366
923412 98741  123652
31453 1298  123794
123652 123783  12984
123794   987412
12984   678123
987412   
678123   

专家解答

如果您运行以下查询

select distinct rowid rid
from   chk_ppl_val c,
       data_upload d
where  d.id = '5379e360b0c8f9de684'
and    c.industry_code like d.string_value||'%'


您将获得行业代码匹配的chk_ppl_val中的所有行。我们需要 “区别”,因为联接可能会多次返回相同的行。一旦我有了这些,我们可以简单地做:

select *
from chk_ppl_val
where rowid in ( 
  select distinct rowid rid
  from   chk_ppl_val c,
         data_upload d
  where  d.id = '5379e360b0c8f9de684'
  and    c.industry_code like d.string_value||'%'
)


你可以这样做:

select distinct c.col1, c.col2, c.col3, ......
from   chk_ppl_val c,
       data_upload d
where  d.id = '5379e360b0c8f9de684'
and    c.industry_code like d.string_value||'%'


但这可能意味着一些繁重的排序/临时分段工作,或者取决于列的数据类型的问题。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论