基于条件连接,从列值中删除子串的一部分

时间:2015-10-13 15:18:56

标签: sql regex oracle join substr

我想通过替换列开头的模式来加入2个表中的2列。

表1:

ABC_somename_ABC

something_XYZ

表2:

somename_ABC

somthing_XYZ

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

我尝试使用substr,instr函数删除直到第一个下划线。 SUBSTR(列,INSTR(列,' ')+ 1)这将从任何下划线开始,但我希望它只在以ABC 或XYZ _

使用正则表达式REGEXP_SUBSTR(' ABC_somename_ABC'' [^ ] +',1,2)正在替换双方。 我在开始时只有2个模式,必须删除像ABC ,XYZ_ 有人可以帮我这个。

1 个答案:

答案 0 :(得分:0)

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

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表达式的通配符,因此应该对其进行转义。