查询以获取两个 table 之间的特定值
Query to get specific value between two table
我有两个 table,其中包含两个不同的主键,我们称它们为 table1 和 table2.
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 编辑,因为查询将比较 661
从 table2
到 123
而不是 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'
我有两个 table,其中包含两个不同的主键,我们称它们为 table1 和 table2.
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 编辑,因为查询将比较 661
从 table2
到 123
而不是 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'