根据条件加入,从列值中删除一部分子字符串

join based on condition, remove a part of substring from column value

我想通过替换列开头的模式来连接 2 个表的 2 列。

表 1:

ABC_somename_ABC

something_XYZ

表 2:

somename_ABC

somthing_XYZ

在这里,我必须在开头而不是结尾处替换 ABC_ 部分,并进行等值连接。在第二种情况下,它不应该替换,因为它没有 ABC_

我尝试使用 substr,instr 函数删除第一个下划线。 SUBSTR (column, INSTR (column, '') + 1) 这将以任何下划线开头,但我希望它仅在以 ABC 或 XYZ_

开头时起作用

使用正则表达式 REGEXP_SUBSTR ('ABC_somename_ABC','[^]+', 1,2) 替换两边。 我在开始时只有 2 个模式必须删除,例如 ABC、XYZ_ 有人可以帮我解决这个问题吗?

看起来你只想在字符串的末尾加入:

on t1.col like '%' || t2.col

如果你真的想在开头测试 "ABC_":

on (t1.col like 'ABC\_%' and t1.col like '%' || t2.col) or
   (t1.col not like 'ABC\_% and t1.col = t2.col)

注意:下划线 ('_') 是 like 表达式的通配符,因此应进行转义。