我正在使用oracle 10g,我有一个问题要问你。
是否可以将子查询“插入”LIKE()
运算符?
例如:SELECT* FROM users u WHERE u.user_name LIKE ( subquery here );
我之前尝试过的事情 - >
SELECT * FROM dictionary WHERE TABLE_NAME
LIKE (Select d.TABLE_NAME from dictionary d
where d.COMMENTS LIKE '%table%'
)
WHERE ROWNUM < 100;
它告诉我,我的查询没有吵闹 - &gt; ORA-00933: la commande SQL ne se termine pas correctement
(sql查询无法正确完成),最后一个WHERE
已经完成。
我知道这是一个愚蠢的查询,但这只是一个我正在寻找答案的问题=)
答案 0 :(得分:4)
我猜你想要这样做,因为你想同时比较多个值。使用子查询(如您的示例中)将无法解决该问题。
这是另一种方法:
select *
from users u
where exists (<subquery here> where u.user_name like <whatever>)
或使用显式联接:
select distinct u.*
from users u join
(subquery here
) s
on u.user_name like s.<whatever>
答案 1 :(得分:1)
是的,为什么不呢?
SELECT * FROM users u WHERE u.user_name LIKE (select '%arthur%' from dual);
答案 2 :(得分:1)
如果您的子查询返回超过1行,并且此行不是字符串,则在您的情况下将无法使用IN
代替LIKE
答案 3 :(得分:1)
仅当您的子查询返回一个值
时