【发布时间】:2023-03-08 21:29:01
【问题描述】:
我在 Postgres 9.5 中有一个带有数组列 z 的表 t。我想选择id,其中z 是NULL 或{NULL}。
id | z
---+--------
1 | {NULL}
2 | null
我尝试使用array_remove() 将{NULL} 更改为NULL:
SELECT id,
array_remove(z,NULL) as removed
from t;
返回:
id | z | removed
---+--------+-------
1 | {NULL} | {}
2 | null | null
但是,如果我查询这个:
select id, z from t where removed is null;
我仍然得到 id 1。理想情况下,我想避免取消嵌套和分组备份。
【问题讨论】:
-
请提供表格定义。 demo
-
这个问题有误导性,如果你能说得清楚一点就好了。如果我理解标题,你需要
nullif(z, '{null}') -
我尽我所能编辑了问题并添加了一个 dbfiddle(演示)[dbfiddle.uk/…
-
目前还不清楚,您要实现什么:小提琴中的表定义有一个整数字段 z。你写 "where z is either null OR {NULL}" 但是 z 不能是
{NULL}给定你的表定义。
标签: arrays postgresql null