一.查询
- extract函数,查询节点值,带节点名
--获取带节点的值,例如:<tel>222</tel>select extract(xmltype(e.prj_xml),\'/data/project/persons/person[1]/tel\').getStringVal()as titlefrom project e where e.zh_title=\'123\';--备注如果节点表达式查询一个节点的父节点,则会将该父节点下的所有节点包含该父节点查出
- extractvalue函数,查询节点值,不带节点名
select extractvalue(xmltype(e.prj_xml),\'/data/project/persons/person[1]/tel\') as resultfrom project e where e.zh_title=\'123\';
二.组装
- xmlforest,将指定列以xml格式查询出来,可指定生成的xml节点名称
select xmlforest(e.zh_title as zhTitle,e.prj_no as prjNo,e.psn_code as psnCode).getStringVal() as xmlfrom project e where e.zh_title=\'123\';
- xmlelement,为查询出来的xml添加挂载的父节点,并将xml字符串格式化成xml ,与xmlforest函数配套使用
select xmlelement(data,xmlforest(e.zh_title,e.prj_no,e.psn_code)).getStringVal() as xmlfrom project e where e.zh_title=\'123\';
仅仅使用xmlelement进行组装可以使空值时也同样生成xml标签
select xmlelement(\"EMP\",xmlelement(\"ENAME\", ename),xmlelement(\"JOB\", job),xmlelement(\"MGR\", mgr)).getclobval() xmlfrom scott.emp;