sql - 如何在一侧有额外字符的字段上连接两个表?
问题描述
我有两张桌子,需要离开加入他们。这些表需要在 OrderNum 上连接,但是其中一个表将带有 U 或 - 的 OrderNum 存储在订单号中,否则它们会匹配。OrderNum 示例值如下所示:Orders 表中的 44440011,而在另一个表 (Employee) 中,它存储为:U444-44-0011 或 4444-0011。它们都与同一个订单相关,但它在 Employee 表中的存储方式不同,因为它来自另一个系统。
我曾尝试在 OrderNum 开头有“U”的一侧使用 subtring,但我不知道当有多个条件时如何写这个,即“U”或“-”。
Select *
from Orders o
Left Join Employee E on o.OrderNum = E. OrderNum
我需要结果集将所有数据显示为与 Orders 表和 Employee 表中的所有字段的一对多关系
解决方案
您可以使用 REPLACE 来实现它:
SELECT
*
FROM
ORDERS O
LEFT JOIN EMPLOYEE E
ON O.ORDERNUM = REPLACE(REPLACE(E.ORDERNUM, 'U', ''), '-', '');
如果数据类型不匹配,那么您可以使用to_number
它。
干杯!!
推荐阅读
- arrays - 数据数组必须具有相同的长度,并且在 GEKKO 中的动态问题错误中匹配时间离散化
- python - 如何在 Python(Pandas)中将极大的数据集处理成块,同时考虑完整的数据集以进行函数应用?
- docker - Jupyterlab 容器无法连接到端口 9092 上的 kafka localhost 服务器
- java - 使用 Lock 锁定数组中的位置,而不是使用 synchronized 进行并发(细粒度锁定)
- python - Pandas:在给定值的 DataFrame 中搜索最近的前一行
- javascript - 获取切换元素的值
- node.js - 是否可以从 node.js 上的数据库中呈现车把模板?
- go - 忽略 IntelliJ 中未解析的引用
- swift - Swift Firebase - 将估计的 ServerTimestamp 与可编码的自定义对象相结合
- python - 想通过网络抓取获得所有尺寸的项目