查询以获取两个 table 之间的特定值

Query to get specific value between two table

我有两个 table,其中包含两个不同的主键,我们称它们为 table1table2.

table 可能具有相同的列数。

Table1:

ID NOM CODE
1 AAA 661YYYDD
2 BBB YYYD661
3 CCC YD661
4 DDD P5500Z

Table 2:

ID KEYCODE
1 661
2 55

我希望能够通过KEYCODE得到: table1 中包含 661 或 55 的所有记录。例如,当我 select 到 661 时,我只得到 tables1 的前 3 行。

这是一种选择: 对于来自 table2 select 的每个 keycode 来自 table1 的行在 code 列中具有该数字,但它必须是第一个数字,例如,如果您有像 'XX123XX661' 这样的值不会被 select 编辑,因为查询将比较 661table2123 而不是 661 这是第二个数字相同的字符串。

select * from table1
where to_number(regexp_substr(code,'[0-9]{1,}'),'999999') in (select keycode from table2)

这也有效:

SELECT *
FROM TABLE1
JOIN TABLE2
ON TABLE1.CODE LIKE '%'||TABLE2.KEYCODE||'%'
WHERE TABLE2.KEYCODE = '661'

dbfiddle