Postgresql 排除具有空值的行
我得到了请求的输出,它提供了我所需要的所有信息。但是在输出结果中,我有一个空行,但是它们应该从输出中排除,因为它们不包含完整的信息。Postgresql 排除具有空值的行,postgresql,jsonb,Postgresql,Jsonb,我得到了请求的输出,它提供了我所需要的所有信息。但是在输出结果中,我有一个空行,但是它们应该从输出中排除,因为它们不包含完整的信息。 drXY:null和distInM:null-不应输出 他们应该像下面的例子一样用科迪酸盐填充 drXY:50.34982681,30.95430183 | fromXY:50.33421340,30.98074794 | distInM:2561 drXY:50.35084534,30.95514488 | fromXY:50.33421340,30.980
drXY:null
和distInM:null
-不应输出
他们应该像下面的例子一样用科迪酸盐填充
drXY:50.34982681,30.95430183 | fromXY:50.33421340,30.98074794 | distInM:2561
drXY:50.35084534,30.95514488 | fromXY:50.33421340,30.98074794 | distInM:2597
这就是我得到的
drXY:46.46833420,30.74011040 | fromXY:46.48067899,30.74296405 | distInM:1390
| fromXY:50.37433094,30.92993617 |
drXY:50.36543655,30.92126656 | fromXY:50.36977360,30.92906177 | distInM:735
我试过这个
select substring(query from '(drXY:[0-9]+\.[0-9]+,[0-9]+\.[0-9]+)') as drxy,
substring(query from '(fromXY:[0-9]+\.[0-9]+,[0-9]+\.[0-9]+)') as fromxy,
substring(query, '(distInM:[0-9]+)') as dist
from (
select additional_data -> 'cd' ->> 'Query' as query
from stat_event where
additional_data -> 'cd' ? 'Query' and
value is null and
action = 'ProposalShown' and
created between '2019-08-04' and '2019-08-05') t;
要处理派生值,我们可以将表达式放在a中,然后像处理普通列一样处理派生列
with (
select substring(query from '(drXY:[0-9]+\.[0-9]+,[0-9]+\.[0-9]+)') as drxy,
substring(query from '(fromXY:[0-9]+\.[0-9]+,[0-9]+\.[0-9]+)') as fromxy,
substring(query, '(distInM:[0-9]+)') as dist
from (
select additional_data -> 'cd' ->> 'Query' as query
from stat_event where
additional_data -> 'cd' ? 'Query' and
value is null and
action = 'ProposalShown' and
created between '2019-08-04' and '2019-08-05'
) t
) as derived
select *
from derived
where drxy is not null
and fromxy is not null
and dist is not null;
注意:如果在insert和update中将
query
分解为其派生列,事情会变得更简单、更快。您的查询包含JSON操作,但您的示例没有显示此类操作。请添加简化的(!)数据集和预期输出。空值应该如何填充,数据应该来自哪里?不应该填充空数据。在这种情况下,我应该从输出中排除空值,只获取填充值,如示例中所示。当我尝试复制粘贴此代码时,会得到语法错误:语法错误位于或接近“(“第1行:带(@SemyonKolesnikov我巧妙地加入了一个简单的语法错误,所以在运行它之前,您必须了解您要复制的内容!…好的,不,我搞错了。但是您应该能够自己修复它。请参阅