Sql,Subquery成一个LIKE()运算符

时间:2013-05-10 14:51:15

标签: sql oracle10g

我正在使用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已经完成。

我知道这是一个愚蠢的查询,但这只是一个我正在寻找答案的问题=)

4 个答案:

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

Example at SQL Fiddle.

答案 2 :(得分:1)

如果您的子查询返回超过1行,并且此行不是字符串,则在您的情况下将无法使用IN代替LIKE

答案 3 :(得分:1)

仅当您的子查询返回一个值