将子字符串与字符串匹配

时间:2014-07-31 15:11:47

标签: sql oracle-sqldeveloper

请告诉我以下问题:

我在Oracle数据库中有两个表,一个包含完整数字,另一个包含部分表。

表1:

12323543451123
66542123345345
16654232423423
12534456353451
64565463345231
34534512312312
43534534534533

表2:

1232
6654212
166
1253445635
6456546
34534
435345

您能否建议一个连接这两个表的查询,并显示6456546和64565463345231之间的关系。主要的是表2包含比表1更多的数据,我需要找到表2中表1中没有的所有子串。

提前致谢!

4 个答案:

答案 0 :(得分:0)

您可以尝试使用CONTAINS运算符,如下所示:

SELECT * FROM Table2 JOIN Table1 ON Table1.id=Table2.id 
WHERE NOT CONTAINS (Table2.data, Table1.data)

答案 1 :(得分:0)

试试这个:

with t as (
  select 123 id from dual union all
  select 567 id from dual union all
  select 891 id from dual 
), t2 as (
  select 1112323 id from dual union all
  select 32567321 id from dual union all
  select 44891555 id from dual 
)
select t.id, t2.id
  from t, t2
 where t2.id||'' like '%'||t.id||'%'

答案 2 :(得分:0)

表1中的数字是否在表1的设定位置?例如,每次1232在同一个地方,或者你必须搜索数字的刺痛。如果已设置,您可以使用内联选择或临时表,并创建搜索字符串的子字符串,然后在该字段上加入表或临时表。

答案 3 :(得分:0)

首先需要说明表1和表2中的数字是否重复,如果不是,那么我认为这个查询可以帮到你:

SELECT * 
  FROM Table_1 
  JOIN Table_2 ON Table_1.ID = Table_2.ID
 WHERE Table_2.DATA LIKE Table_1.DATA