除了在自己的返回数据上运行查询之外,where子句中的子查询似乎只返回任何内容

时间:2012-04-12 12:06:14

标签: sql oracle

我有一个SQL查询,在where子句中有一个嵌套选择。如果我自己运行该子查询,我会返回一行。但是,如果我将其作为嵌套查询运行,则不会返回任何内容。如果我将嵌套查询替换为我知道返回的实际数据,则查询成功。

select * from customers where id in (select people.id from people)

我不明白的是,如果我跑

select people.id from people

我得到数据,让我们说ABC。如果我跑

select * from customers where id in ('ABC')

我得到数据。我们在Oracle数据库上,不确定它是否相关。

2 个答案:

答案 0 :(得分:1)

所以可能是你的id是带有尾随空格的字符串。 试试这个:

select a.id, a.other_relevant_fields from customers a, people b 
where TRIM(a.id)=TRIM(b.id)

答案 1 :(得分:1)

在人员表上运行(当然在dev env中测试):

update people set ID = regexp_replace(ID, '[[:cntrl:]]','');
commit;

然后再次尝试您的查询(并尝试使用连接)。

这应该适用于11g,不确定早期版本。