在 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" 只有一条记录时才有效
我可以在 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" 只有一条记录时才有效