0

我正在使用 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;

它告诉我我的查询没有 wokrs -> ORA-00933: la commande SQL ne se termine pas correctement(sql 查询没有正确完成),最后一个WHERE出来了。

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

4

4 回答 4

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>
于 2013-05-10T14:54:08.750 回答
1

如果您的子查询返回多于 1 行,并且如果该行不是字符串,则在您的情况下使用IN而不是LIKE

于 2013-05-10T14:54:46.497 回答
1

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

于 2013-05-10T14:54:48.393 回答
1

是啊,为什么不呢?

SELECT * FROM users u WHERE u.user_name LIKE (select '%arthur%' from dual);

SQL Fiddle 的示例。

于 2013-05-10T14:52:43.207 回答