Oracle子查询后出错了

时间:2017-01-25 11:33:12

标签: sql oracle syntax-error

我有以下SQL查询

SELECT * FROM users u WHERE 1=1 and u.user_name LIKE 'A%'

它按预期工作。但是以下行会导致错误消息。

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

错误消息如下:

ORA-00933 SQL Command not properly ended

我试图用“;”关闭查询但它仍然给出了同样的错误。什么可能导致此错误?

编辑:我需要LIKE并且不能使用IN,假设我们在用户数据库中只有一个'arthur'。

2 个答案:

答案 0 :(得分:2)

您的查询在语法上似乎是正确的。子查询是标量子查询,它只返回一列,最多只返回一行。

通常,您可以使用LIKEEXISTS与子查询一起使用:

SELECT u.*
FROM users u
WHERE 1 = 1 AND
      EXISTS (SELECT 1
              FROM t
              WHERE u.user_name LIKE t.col
             );

如果您的实际查询更复杂,那么这可能会解决您的实际问题。

答案 1 :(得分:0)

我按照你的方式尝试了相同的查询,但它运行正常。

SELECT * FROM employee e,其中1 = 1,e.name like(从双重中选择'%abc%');