1

我有一个 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 数据库上,不确定这是否相关。

4

2 回答 2

1

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

select a.id, a.other_relevant_fields from customers a, people b 
where TRIM(a.id)=TRIM(b.id)
于 2012-04-12T12:23:13.060 回答
1

在人员表上运行它(当然在开发环境中测试):

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

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

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

于 2012-04-12T13:16:57.400 回答