Few examples to extract xml data in a SQL query.
#1. Extract Master Child xml using xmltable
XMLTABLE
#2. EXTRACTVALUE
#4. To extract with the xml tag
#5. Prior to Oracle Database 10g Release 2 using xmlsequence
XMLSEQUENCE
Feel free to point out if anything is missing/wrong in this blog
#1. Extract Master Child xml using xmltable
XMLTABLE
selectheader_row.department_id ,header_row.department_name ,child_row.employee_id ,child_row.first_name ,child_row.last_namefromXMLTABLE(XMLNAMESPACES(default'http://johnytips.blogspot.com.au/ns/department') ,'/department'PASSINGxmltype( '<department xmlns="http://johnytips.blogspot.com.au/ns/department" id="1"> <department_name>Research</department_name> <employees> <employee id="1"> <first_name>ANOOP</first_name> <last_name>JOHNY</last_name> </employee> <employee id="2"> <first_name>ANISH</first_name> <last_name>JOHNY</last_name> </employee> </employees> </department>')COLUMNSdepartment_idVARCHAR2(30)PATH'@id', department_nameVARCHAR2(10)PATH'department_name', child_rowsXMLTYPEPATH'employees') header_row ,XMLTABLE(XMLNAMESPACES(default'http://johnytips.blogspot.com.au/ns/department') ,'/employees/employee'PASSINGheader_row.child_rowsCOLUMNSemployee_idNUMBERPATH'@id', first_nameVARCHAR2(30)PATH'first_name', last_nameVARCHAR2(30)PATH'last_name') child_row;
#2. EXTRACTVALUE
#3.EXTRACTwithtas(selectxmltype('<employee> <employee_id>1</employee_id> <first_name>ANOOP</first_name> <last_name>JOHNY</last_name> </employee>') strfromdual)selectextractvalue(str,'/employee/employee_id') EMPLOYEE_ID ,extractvalue(str,'/employee/first_name') FIRST_NAME ,extractvalue(str,'/employee/last_name') LAST_NAMEfromt;
withtas(selectxmltype('<employee> <employee_id>1</employee_id> <first_name>ANOOP</first_name> <last_name>JOHNY</last_name> </employee>') strfromdual)selectextract(str,'/employee/employee_id/text()') EMPLOYEE_ID ,extract(str,'/employee/first_name/text()') FIRST_NAME ,extract(str,'/employee/last_name/text()') LAST_NAMEfromt;
#4. To extract with the xml tag
withtas(selectxmltype('<employee> <employee_id>1</employee_id> <first_name>ANOOP</first_name> <last_name>JOHNY</last_name> </employee>') strfromdual)selectextract(str,'/employee/employee_id') EMPLOYEE_ID ,extract(str,'/employee/first_name') FIRST_NAME ,extract(str,'/employee/last_name') LAST_NAMEfromt;
#5. Prior to Oracle Database 10g Release 2 using xmlsequence
XMLSEQUENCE
selectextractvalue(column_value,'/employee/first_name') "FIRST_NAME" ,extractvalue(column_value,'/employee/last_name') "LAST_NAME"fromtable(xmlsequence(xmltype('<employees> <employee> <employee_id>1</employee_id> <first_name>ANOOP</first_name> <last_name>JOHNY</last_name> </employee> <employee> <employee_id>2</employee_id> <first_name>ANISH</first_name> <last_name>JOHNY</last_name> </employee> </employees>').extract('/employees/employee')));
Feel free to point out if anything is missing/wrong in this blog




No comments:
Post a Comment