与sql中的列进行比较

与sql中的列进行比较,sql,oracle,Sql,Oracle,我在两个不同的表中有两列。 第一列是数字,如0493484402,第二列是审计详情,如“addr\u主订阅已从3248814893更改为3248814973” 我必须检查第二列的整个字符串中是否存在第一列值 如果号码不存在,我需要该号码作为输出您可以使用如此处: SELECT * FROM table1 t1 INNER JOIN table2 t2 ON t2.audit_detail LIKE '%' || t1.col1 || '%'; 我们也可以使用INSTR: SELECT

我在两个不同的表中有两列。 第一列是数字,如
0493484402
,第二列是审计详情,如
“addr\u主订阅已从3248814893更改为3248814973”

我必须检查第二列的整个字符串中是否存在第一列值


如果号码不存在,我需要该号码作为输出

您可以使用
此处:

SELECT *
FROM table1 t1
INNER JOIN table2 t2
    ON t2.audit_detail LIKE '%' || t1.col1 || '%';
我们也可以使用
INSTR

SELECT *
FROM table1 t1
INNER JOIN table2 t2
    ON INSTR(t2.audit_detail, t1.col1) > 0;

我认为,使用像和
instr
这样的
解决方案,您必须在第二列中的字符串前后有一些delimeter。第一列中的Else
1
将与第二列中的eith
123
匹配

查看示例数据,可以将空格用作delimeter。但您需要在第二列中使用前导和尾随空格来匹配第一列

您可以使用以下内容:

Select * 
Table1 t1 join table2 t2
On ' ' || t2.second_column || ' ' like '% ' || t1.first_column || ' %';

你的预期产出是多少
32493484402
不在posted字符串中,因此是否需要“不存在”标志?还是一套空的?此外,如果第一列的值为
4881418
,这算不算匹配?如果第二列中没有数字,我希望数字和数字应该是11或10位