我有一个table1假设ABC,我从一个像'MYname_GKS_50'这样的列中获取o / p。我只希望将该结果的 MYname 部分用作获取不同表的另一列的条件。 假设我从table2.xyz给出columnname = MYname 。这两个查询应该在OracleDB中的单个SQL查询中。 e.g:
表1(col1,col2)
col2有数据 MYname_GKS_50,MYname_GKS_51,MYname_GKS_52,Ora_10,Ora_11 ......
我希望col2结果仅针对我的搜索条件 MYname_GKS 和 Ora 部分,不需要更改nos。
col2的值,即 MYname_GKS 和 Ora 现在应该与table2的col3进行比较。 如果它匹配,它应该给我table2的col4。
任何建议大师!
答案 0 :(得分:0)
您可以在加入条件中使用like
:
on t1.col2 like t2.col3||'%'
喜欢这里:
with table1 (col1, col2) as (
select 1, 'MYname_GKS_50' from dual union all
select 2, 'MYname_GKS_51' from dual union all
select 3, 'MYname_GKS_52' from dual union all
select 4, 'Ora_10' from dual union all
select 5, 'Ora_11' from dual ),
table2 (col3, col4) as (
select 'MYname_GKS', 'XYZ' from dual union all
select 'Ora', 'PQR' from dual )
select *
from table1 t1 join table2 t2 on t1.col2 like t2.col3||'%'
结果:
COL1 COL2 COL3 COL4
---------- ------------- ---------- ----
1 MYname_GKS_50 MYname_GKS XYZ
2 MYname_GKS_51 MYname_GKS XYZ
3 MYname_GKS_52 MYname_GKS XYZ
4 Ora_10 Ora PQR
5 Ora_11 Ora PQR
有一个风险,即table2包含多个匹配的行,例如MYname
和MYname_GKS
,我不知道在这种情况下你想要什么。