oracle - 使用 in 子句加入 oracle 以获取列表
问题描述
我有 2 张桌子,1 张是transaction
,其他的是trackingNumber
事务具有trackingNumberList
其中包含的值,如123, 235, 55
. 这 123
是id
of trackingNumber
,其他 2 个值相同。
我想用 trackingNumber 加入交易,但我没有找到任何加入列表的解决方案。
我也试过INSTR
了,但它没有给出正确的数据。
select tn.*, t.id
from transaction t
left join TrackingNumber tn on INSTR(t.trackingnumberlist, tn.id) > 0
where t.id = 2439845;
我正在使用 ORACLE 数据库。
解决方案
不要拆分字符串;只需将列表和 id 包装在您正在使用的分隔符中,并使用以下方法进行子字符串匹配LIKE
:
select tn.*, t.id
from transaction t
left join TrackingNumber tn
on (', '||t.trackingnumberlist||', ' LIKE '%, '||tn.id||', %')
where t.id = 2439845;
如果你想用INSTR
做同样的事情:
select tn.*, t.id
from transaction t
left join TrackingNumber tn
on (INSTR(', '||t.trackingnumberlist||', ', ', '||tn.id||', ') > 0)
where t.id = 2439845;
推荐阅读
- docker - 如何在詹金斯中运行单个量角器测试套件
- android - 颤振在json帖子中返回多行
- sql - 选择更高的价值
- node.js - MERN 堆栈 Web 应用程序的最佳结构(nodejs & express & mongoDB 作为服务器,Reactjs 作为客户端?
- c# - 页面加载时调用 ASP.NET Post 请求,Webclient 不工作
- mysql - 从 PHPmyadmin 中删除脚本
- shell - 如何在 shell 脚本中打印 HTTP 状态码?
- javascript - Squarespace 接受来自其他域的请求
- php - 从 MySQL 回显下一行
- javascript - Vue组件上的捏缩放问题