首页 > 解决方案 > 如何在一侧有额外字符的字段上连接两个表?

问题描述

我有两张桌子,需要离开加入他们。这些表需要在 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 表中的所有字段的一对多关系

标签: sqloracle

解决方案


您可以使用 REPLACE 来实现它:

SELECT
    *
FROM
    ORDERS O
    LEFT JOIN EMPLOYEE E 
ON O.ORDERNUM = REPLACE(REPLACE(E.ORDERNUM, 'U', ''), '-', '');

如果数据类型不匹配,那么您可以使用to_number它。

干杯!!


推荐阅读