如果null
运算符值例如
in
值
SELECT name
FROM table
WHERE id IN (1, 2, 3, 4, 5)
在这种情况下,我想获取null
值,以防IN
运算符值不存在,例如
IN (1, 2, 3, 4, 5)
我希望返回值为
“ ABC”,空,“ XYZ”,空,空
当前它仅返回
“ ABC”,“ XYZ”
答案 0 :(得分:1)
只需创建具有所有值的帮助器表:
create table helpTable (uid int);
insert into helpTable values (1),(2),(3),(4),(5);
然后left join
,并使用case
语句确定是否在有相应值(不是name
)时显示null
:
SELECT case when ht.uid is not null then name end `name`
FROM table t
LEFT JOIN helpTable ht ON t.id = ht.uid;
完成后,DROP TABLE IF EXISTS helpTable;
。
如果您不想创建表,则可以执行此操作(但我不确定100%会起作用):
SELECT case when ht.uid is not null then name end `name`
FROM table t
LEFT JOIN (
select 1 `uid`
union all
select 2
union all
select 3
union all
select 4
union all
select 5
) ht ON t.id = ht.uid;
答案 1 :(得分:1)
此谓词:
WHERE id IN (1, 2, 3, 4, 5)
只能应用于表中存在的行。 WHERE
子句就是这样,它会针对存在的行进行评估,如果条件为真,则该行会包含在查询的结果集中。
谓词无法发明表中不存在的新行。
因此,不能,您不能使用IN ( )
在表中缺少ID的地方插入NULL行。
答案 2 :(得分:0)
您可以创建临时表,例如:
None
并使用以下pl / sql过程:
create tmp_table (name varchar2(32);