sql - Oracle子查询后出现类似错误

标签 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

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

编辑:我需要,不能使用IN,假设我们在用户数据库中只有一个“亚瑟”。

最佳答案

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

通常,您可以将LIKE与使用EXISTS的子查询一起使用:

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

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

关于sql - Oracle子查询后出现类似错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41850564/

相关文章:

sql - 在Delphi中使用数组插入Into语句不起作用

mysql - 当一个字段不等于另一个字段时具有条件的SQL查询

oracle - 使用 Oracle UCP 时连接关闭

java - 如何让Tomcat连接到多个数据库?

php 文件在使用空值时显示语法错误

let ... in 的 OCaml 语法错误

SQL子查询错误,附近)

java - 根据 timeStart 和 timeEnd 值选择最大并发记录数

sql - oracle sql中填写序号

php - 我的简单行 'drawing'代码有什么问题?