如何查询postgres表中的JSON列,以从所有json检索特定json键的所有值

时间:2018-11-29 01:32:07

标签: json postgresql postgresql-9.5

我们使用的是postgres,因为我们有一个表,其中包含JSON类型的列,因为我们有以下类型的JSON文档,

请找到示例here

我想从所有JSON文档中获取JSON密钥<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://xml.netbeans.org/schema/AmazingMovies" xmlns:tns="http://xml.netbeans.org/schema/AmazingMovies" elementFormDefault="qualified"> <xsd:complexType name="movies"> <xsd:sequence> <xsd:element name="Title" type="xsd:string"/> <xsd:element name="Director" type="xsd:string"></xsd:element> <xsd:element name="Year" type="xsd:int"/> <xsd:element name="movieDetails" type="tns:movieDetails"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="movieDetails"> <xsd:sequence> <xsd:element name="Actor" type="xsd:string"/> <xsd:element name="numberOfCast" type="xsd:int"></xsd:element> <xsd:element name="releaseDate" type="xsd:date"/> </xsd:sequence> </xsd:complexType> <xsd:element name="OnDisplay"> <xsd:complexType> <xsd:sequence > <xsd:element name="collectionOfMovies" type="tns:movies" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> 的所有值

我的意思是我们有这样的文档,对于该列的每一行,并且每个文档包含该JSON密钥,我都试图从所有文档(该列的所有行)中获取该json密钥的所有值

1 个答案:

答案 0 :(得分:0)

您可能正在寻找json_array_elements。 在json functions页中找到所需的一切。

对于您的示例,您可以执行以下操作:

select json_array_elements(json_array_elements('{
"srs_student_information": {
    "header": {
        "name": "kkkk"
    },
    "beginning_segment": {
        "age": 12
    },
    "loop_id_sls": [{
        "student_level_details": {
            "class": "12"
        },
        "parent_details": [{
            "name": "assa"
        }],
        "student_identification": [{
            "student_id_qual": "BM",
            "student_id": "00547311"
        }, {
            "student_id_qual": "CN",
            "student_id": "467931496024"
        }, {
            "student_id_qual": "CN",
            "student_id": "467931496035"
        }, {
            "student_id_qual": "CN",
            "student_id": "467931496046"
            }]
        }]
    }
}'::json->'srs_student_information'->'loop_id_sls')->'student_identification')->>'student_id' student_id