类似错误后的 Oracle 子查询
Oracle subquery after like 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'。
您的查询在语法上似乎是正确的。子查询是一个标量子查询,其中returns只有一列最多一行。
通常,您可以将 LIKE
与使用 EXISTS
的子查询一起使用:
SELECT u.*
FROM users u
WHERE 1 = 1 AND
EXISTS (SELECT 1
FROM t
WHERE u.user_name LIKE t.col
);
如果您的实际查询更复杂,那么这可能会解决您的实际问题。
我已经尝试过与您相同的查询,效果很好。
SELECT * FROM employee e where 1=1 and e.name like (select '%abc%' from dual);
我有以下 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'。
您的查询在语法上似乎是正确的。子查询是一个标量子查询,其中returns只有一列最多一行。
通常,您可以将 LIKE
与使用 EXISTS
的子查询一起使用:
SELECT u.*
FROM users u
WHERE 1 = 1 AND
EXISTS (SELECT 1
FROM t
WHERE u.user_name LIKE t.col
);
如果您的实际查询更复杂,那么这可能会解决您的实际问题。
我已经尝试过与您相同的查询,效果很好。
SELECT * FROM employee e where 1=1 and e.name like (select '%abc%' from dual);