请高手给出能实现以下结果的查询方法,谢谢

wildoracle 2010-01-14 11:47:54

表 tab 有以下两列

我想取list列最接近 ABCDEF BCBD的 code

结果应为 456 457

code list

123 A
123 AB
123 AC
123 ABC
321 BC
321 BBB
456 ABCD
456 ABCDE
457 BCB
...全文
84 6 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
tangren 2010-01-20
  • 打赏
  • 举报
回复

select code, list
from (select code,
list,
row_number() over(order by abs(length('ABCDEF') - length(list))) rn
from (select code, list
from test
where 'ABCDEF' like '%' || list || '%'))
where rn = 1
union all
select code, list
from (select code,
list,
row_number() over(order by abs(length('BCBD') - length(list))) rn
from (select code, list
from test
where 'BCBD' like '%' || list || '%'))
where rn = 1;
wildoracle 2010-01-19
  • 打赏
  • 举报
回复
顶下,能实现的级下方法,谢谢
wh62592855 2010-01-15
  • 打赏
  • 举报
回复
大致看了一下如果想实现好像有些麻烦哦……
等等看有没有哪位朋友给出个简单的方法
wildoracle 2010-01-15
  • 打赏
  • 举报
回复
狂浪;

可能我描述的不清除,给你们的理解带来困难,我的意思是如果知道ABCDEF,ABCD,BCBD这三个值,

我想找出表中list列最长的那个能匹配到上面给出的三个值的code,就如 code = 456 list 为ABCDE 这

行数据最能匹配ABCDEF,而CODE为123 list为ABC的这行数据要比ABCDE 短一点,匹配的有点模糊,没前者精确。code 为457 list为BCB的最接近BCBD

小灰狼W 2010-01-15
  • 打赏
  • 举报
回复
难点在于这个“最接近”的依据
没有这个依据就无从查询
ABCDEF和ABCD哪个更接近ABCDE ?
需要将字符串转换成某种编码来比较
wildoracle 2010-01-15
  • 打赏
  • 举报
回复
没人给点意见么,顶下.
相关推荐
发帖
Oracle 高级技术

3472

社区成员

Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
帖子事件
创建了帖子
2010-01-14 11:47
社区公告
暂无公告