比较where子句中json数组元素的2个值

时间:2017-01-10 06:24:38

标签: postgresql-9.3 jsonb

这是我的情景。我将我的应用程序安装在计算机上。我有一个环境变量,告诉我应用程序安装在哪个驱动器上。我还了解有关系统中可用的每个驱动器,驱动器的总空间和可用磁盘空间的信息。所有这些信息都以jsonb的形式存储在postgres中。我必须编写一个查询来输出系统的详细信息,并且只获取安装我的应用程序的驱动器的详细信息。

Json应用程序主路径

enter image description here

广告信息

enter image description here

这是我的示例代码

SELECT json_data->>'Systemname' as SystemName, 
json_data ->> 'ApplicationHomePath'as ApplicationHome,
(jsonb_array_elements(json_data -> 'systemInformation' -> 'storage') -> 'capacity'->>'size') as capacity,
(jsonb_array_elements(json_data -> 'systemInformation' -> 'storage') -> 'available'->>'size') as availablesize,
(jsonb_array_elements(json_data -> 'systemInformation' -> 'storage') ->>'driveLetter') as drive 
FROM json;

如果系统有2个驱动器和相应的信息,当前输出将为一个系统提供2行。我需要它做的是给我驱动器的结果,它等于安装我的应用程序的驱动器。基本上我希望将值与ApplicationHomePath进行比较,如果匹配,请给我输出。

0 个答案:

没有答案