代码之家  ›  专栏  ›  技术社区  ›  filippo

如何在子查询中使用like通配符?

  •  4
  • filippo  · 技术社区  · 8 年前
    Table: FirstNames
    NAME
        Tom
        Joe
        Peter
    
    Table: FullNames
    FULL_NAME:
        Tom Petty.
        Joe Satriani.
        Peter Griffin.
        Sarah Connor.
    

    我想运行一个查询:

    select * 
    from FullNames where FULL_NAME like '%' || (select NAME from FirstNames) || '%'
    

    它产生:

    ORA-01427:单行子查询返回多行

    这似乎是正确的。在甲骨文中有这样做的方法吗?

    2 回复  |  直到 8 年前
        1
  •  4
  •   mathguy    8 年前

    你可以使用 exists :

    select f.*
    from FullNames f
    where exists (select 1
                  from firstnames fn
                  where f.FULL_NAME like '%' || fn.NAME || '%'
                 );
    
        2
  •  5
  •   Lukasz Szozda    8 年前

    你可以使用 JOIN :

    SELECT * 
    FROM FullNames f
    JOIN FirstNames g
      ON f.FULL_NAME LIKE '%' || g.NAME || '%';