假设我正在使用它来解析XML
SELECT xpath('/id/text()', '<id>45687</id>'::xml);
Run Code Online (Sandbox Code Playgroud)
输出就是
xpath
-------
{45687}
Run Code Online (Sandbox Code Playgroud)
如何在没有花括号的情况下有效输出?而且通过有效,我的意思是不必像使用regexp_replace()函数
SELECT regexp_replace(xpath('/id/text()', '<id>45687</id>'::xml)::text, '[{}]', '', 'g');
Run Code Online (Sandbox Code Playgroud)
xpath()不返回字符串,它返回一个xml[].花括号是数组表示法的一部分,而不是数据的一部分 - 您自己将它们与强制转换一起添加text.
对于固定大小的数组,您可以通过索引拉出元素:
SELECT (xpath('/id/text()', '<id>45687</id>'::xml))[1]
Run Code Online (Sandbox Code Playgroud)
将此推广为任意数量的元素,您可能会执行以下操作:
SELECT string_agg(x::text, ',')
FROM unnest(xpath('/id/text()', '<id>45687</id>'::xml)) u(x)
Run Code Online (Sandbox Code Playgroud)
虽然这可能不比原始版本更有效.通过字符串操作执行此操作的最简单方法可能是
SELECT btrim(xpath('/id/text()', '<id>45687</id>'::xml)::text, '{}')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3291 次 |
| 最近记录: |