在 like 运算符内部查询

query inside like operator

我可以在 like 运算符中使用查询吗?

我使用了下面的查询,但是 returns 错误。

select * 
from customers
where cust_name like '%'||select name from members||'%'

像下面这样的东西应该可以工作:

SELECT
 *
FROM
 customers    c
WHERE 1=1
AND EXISTS
 (SELECT 1
  FROM members   m
  WHERE 1=1
  AND c.cust_name LIKE '%'||m.name||'%'
 )

PLSQL中如果你想运行一个查询那么你需要声明一个变量来保存查询的结果。所以你可以这样做:

DECLARE
   var   customers%ROWTYPE;
BEGIN
   SELECT c.*
     INTO var
     FROM customers c
          INNER JOIN members m ON c.cust_name LIKE '%' || m.name || '%';
END;

您应该在子选择中定义成员的名称部分(仅适用于 1 行):

select * 
from customers
where cust_name like (select '%'||name||'%' from members);

同样可以用 JOIN 完成(适用于多行):

select C.* 
from customers C 
INNER JOIN MEMBERS M ON (C.CUST_NAME LIKE '%'||M.NAME||'%');

将子查询括在括号中就足够了

喜欢 cust_name 喜欢 '%'||(select 来自成员的名字)||'%'

但这仅在 table "members" 只有一条记录时才有效