如何在Oracle中的字符串中搜索字符串

时间:2019-08-06 05:59:26

标签: sql oracle

我有一个带有国家/地区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在这种情况下都可以工作

2 个答案:

答案 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
                                       || '%' );

干杯!