Mysql 从xml中提取值的查询
我将xml存储在数据库中,希望从中提取某些部分,如文本后的部分,完整的查询。 在xml中,我有许多查询,然后也希望提取这些查询。 我们有什么办法吗 例如:提取查询而不是值,xml嵌入到数据库中,格式如下。 text=“query1” text=“query2”Mysql 从xml中提取值的查询,mysql,sql,oracle,Mysql,Sql,Oracle,我将xml存储在数据库中,希望从中提取某些部分,如文本后的部分,完整的查询。 在xml中,我有许多查询,然后也希望提取这些查询。 我们有什么办法吗 例如:提取查询而不是值,xml嵌入到数据库中,格式如下。 text=“query1” text=“query2” text=“query3”您需要对Oracle XMLTYPE的用法进行一些研究,但我目前正在使用的一个包中有一个快速函数,它显示了使用.existsnode来验证节点是否存在,以及使用.extract来提取信息 FUNCTION par
text=“query3”您需要对Oracle XMLTYPE的用法进行一些研究,但我目前正在使用的一个包中有一个快速函数,它显示了使用.existsnode来验证节点是否存在,以及使用.extract来提取信息
FUNCTION parse_order_by_xml (p_xml_document IN XMLTYPE) RETURN varchar2
IS
/*** xml document structure *** start
<?xml version="1.0"?>
<OrderByClause>
<OrderBy>
<ColumnName>ELECTOR_ID</ColumnName>
<Order>Asc</Order>
</OrderBy>
<OrderBy>
<ColumnName>CREATED_TS</ColumnName>
<Order>Desc</Order>
</OrderBy>
</OrderByClause>
*** xml document structure *** end ***/
l_order_by_string varchar2(3000) := 'ORDER BY ';
l_index number;
BEGIN
l_index := 1;
WHILE (p_xml_document.existsnode('/OrderByClause/OrderBy[' || to_char(l_index) || ']') = 1) LOOP
l_order_by_string := l_order_by_string
|| p_xml_document.extract('/OrderByClause/OrderBy[' || to_char(l_index) || ']/ColumnName/text()').getStringVal()
|| ' '
|| p_xml_document.extract('/OrderByClause/OrderBy[' || to_char(l_index) || ']/Order/text()').getStringVal()
|| ',';
l_index := l_index + 1;
END LOOP;
l_order_by_string := REGEXP_REPLACE(l_order_by_string, ',$');
RETURN l_order_by_string;
END parse_order_by_xml;
函数parse_order_by_xml(xml类型的p_xml_文档)返回varchar2
是
/***xml文档结构***开始
选民身份证
Asc
创建
描述
***xml文档结构***结束***/
l_order_by_string varchar2(3000):=“order by”;
l_指数;
开始
l_指数:=1;
WHILE(p_xml_document.existsnode('/OrderByClause/OrderBy['| | to_char(l|index)| |']')=1)循环
l_order_by_string:=l_order_by_string
||p_xml_document.extract('/OrderByClause/OrderBy['| | | to_char(l| | |')]/ColumnName/text()).getStringVal()
|| ' '
||p_xml_document.extract('/OrderByClause/OrderBy['| | | to_char(l| | |')]/Order/text()).getStringVal()
|| ',';
l_指数:=l_指数+1;
端环;
l_order_by_string:=REGEXP_REPLACE(l_order_by_string,,$);
按字符串返回订单;
通过xml结束对顺序的解析;
我不知道您想问什么。您正在使用哪些RDBMS?MySQL还是Oracle?神谕者拥有这两个,但它们仍然截然不同:)