我有一个字符串,如
String ids =“1,2,3,4”;
在Oracle数据库中, 现在我可以选择
select a.name from a where id in (ids);
结果是如果表中存在1,2,4,则会显示在列表中。如果4不在表中,则不会显示。
我想进行正确的加入,例如
select a.name from a right join on a.id in (ids);
我希望结果可以
1's name
2's name
3's name
null
答案 0 :(得分:0)
请勿使用right join
。 left join
更加直观(保留第一个表中的所有行以及 second 中的匹配行)。在Oracle中,您可以这样做:
select i.id, a.name
from (select 1 as id from dual union all
select 2 as id from dual union all
select 3 as id from dual union all
select 4 as id from dual
) i left join
a
on i.id = a.id;
还有其他方法可以生成ID列表。如果您正在学习Oracle,这种方法相对简单。
答案 1 :(得分:0)
您可能需要以下内容:
select d.id, case when IDs.id is not null then name end asname
from yourData d
left join
(
select trim(regexp_substr('1,2,3', '[^,]+', 1, level)) as id
from dual
CONNECT BY instr('1,2,3', ',', 1, level - 1) > 0
) IDs
on d.id = IDs.id
这给出了:
ID NAME
---------- ------
1 Name 1
2 Name 2
3 Name 3
4