有没有办法在oracle中选择所有非空值?如何在单行结果中选择非空列?
假设table A (id, aa, ab, ac)
有(1, 12, '', '')(2, '', 3, 4);
select * from A where id = 1;
给整个行。
但我想选择所有非空字段。
在这种情况下 - >
where id = 1 should return (1, 12)
and where id = 2 should return (2, 3, 4)
编辑:
为什么我要这样?想象一下有一张桌子有大约一百个字段。 几乎每行都是空白。 我想要一个只显示非空字段的视图。 我知道这不能做一组行。这将是不一致的。 但是,无论何时我可以使用主键单列出一行,这应该是可能的吗? (而不必明确排除使用情况/其他构造空值字段),您可以找出哪些领域没有null
值
这是不可能的 - 或者是在至少真的很复杂。你想通过这样做来达到什么目的? –
你不能有选择*返回一个有限的列设置(至少不是有效的),并且如果你做了'select * from A where id in(1,2)'那么什么?返回所有包含一些行的列还是空的?你可以使用case语句连接所有的非空列,这样它们都作为一个列出现,当aa不为空然后aa结束时'','||当ab不为空的情况下......'等等,但是您可能会遇到字符串长度问题。 (mycol('AA',12))和'2,myarr(mycol('AB',3),mycol(''))或者你可以为每行返回一个数组AC',4)'来解决这个问题。那会有用吗? – DazzaL