我有一个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数据库上,不确定它是否相关。
答案 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,不确定早期版本。