use*_*959 5 xml postgresql xpath
如何>在PG版本9.2中进行符号显示?我不希望它显示为>.
在postgreSQL中查询
SELECT
XPATH ('/BehaviorReportingRanges/BehaviorReportingRange/Range/text()',
xmlparse(content
'<BehaviorReportingRanges>
<BehaviorReportingRange>
<Range>> 3</Range>
</BehaviorReportingRange>
</BehaviorReportingRanges>'))
Run Code Online (Sandbox Code Playgroud)
版本9.1中的结果:
{"> 3"} -- desired result
Run Code Online (Sandbox Code Playgroud)
结果版本9.2.3:
"{"> 3"}" -- not desired result
Run Code Online (Sandbox Code Playgroud)
有什么指针吗?
非常感谢 !
小智 3
好吧,如果你
CREATE LANGUAGE plpythonu;,那么你可以执行以下操作:
create or replace function unescape(x varchar)
returns varchar language plpythonu as $$
from xml.sax.saxutils import unescape
return unescape(x)
$$;
Run Code Online (Sandbox Code Playgroud)
然后,您的查询可以变为:
SELECT unescape( concat( (
XPATH ('/BehaviorReportingRanges/BehaviorReportingRange/Range/text()',
xmlparse(content
'<BehaviorReportingRanges>
<BehaviorReportingRange>
<Range>> 3</Range>
</BehaviorReportingRange>
</BehaviorReportingRanges>')) )[1]
) );
Run Code Online (Sandbox Code Playgroud)
您需要添加索引以从xpath的数组结果中选择元素,concat是将xml转换为字符串数据类型。
您还可以直接应用 unescape 函数 —— 但生成的字符串是格式化的 xml 数组。