我有一个带有国家/地区ID(国家/地区)列的表A。数据就是这样
US United States
IN India
JP Japan
NP Nepal
等。 我有另一个表B,该表的“国家”列主要包含自由文本数据。数据就像
Texas United States
India KA
XYS Japan WYS
EverestNepal
XYZ
等
我想要的是,如果表B中的“国家/地区”列具有与表A中的任何国家/地区列匹配的国家/地区,则应该返回表A中的“国家/地区”。
所以我举的例子 表B具有德克萨斯州美国---表A中有一个与“美国”匹配的内容:应打印美国
表B具有印度KA ----表A中有一个与“印度”相匹配的内容:它应打印印度
EverestNepal ---表A中有一个与'Nepal'相匹配的内容:应打印尼泊尔 表B有 等等。
总结:如果在表A中找到字符串中任何位置的表B中的国家/地区的确切匹配,则应打印表A中的国家/地区 我不认为Like,IN,Substring在这种情况下都可以工作
答案 0 :(得分:1)
INSTR
(第17行)是您可能需要的。
SQL> with
2 ta (country_id, country) as
3 (select 'US', 'United States' from dual union all
4 select 'IN', 'India' from dual union all
5 select 'JP', 'Japan' from dual union all
6 select 'NP', 'Nepal' from dual
7 ),
8 tb (country) as
9 (select 'Texas United States' from dual union all
10 select 'India KA' from dual union all
11 select 'XYS Japan WYS' from dual union all
12 select 'EverestNepal' from dual union all
13 select 'XYZ' from dual
14 )
15 select b.country B_country,
16 a.country A_country
17 from ta a right join tb b on instr(b.country, a.country) > 0;
B_COUNTRY A_COUNTRY
------------------- -------------
Texas United States United States
India KA India
XYS Japan WYS Japan
EverestNepal Nepal
XYZ
SQL>
答案 1 :(得分:0)
您可以使用like
运算符在表之间进行联接:
SELECT
A.COUNTRY
FROM
TABLE_A A
JOIN TABLE_B B ON ( A.COUNTRY LIKE '%'
|| B.COUNTRY
|| '%' );
干杯!