我们使用的是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密钥的所有值
答案 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