Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 排除具有空值的行_Postgresql_Jsonb - Fatal编程技术网

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我巧妙地加入了一个简单的语法错误,所以在运行它之前,您必须了解您要复制的内容!…好的,不,我搞错了。但是您应该能够自己修复它。请参阅