有了这个查询
SELECT trim(title) FROM (
SELECT
unnest( xpath('//p[@class="secTitle1"]', xmlText )::varchar[] ) AS title
FROM t1
) as t2
以及带有行和空格的 XML 输入文本,
<root>
...
<p class="x">
text text
text text
</p><p> ...</p>
...
</root>
trim()
没有效果(!)。这是一个 PostgreSQL 错误?如何申请fn:normalize-space()
XPath?我需要类似“WHERE title is not null”之类的东西?(Oracle 更简单……) 如何用 PostreSQL 做这个简单的查询?
解决方法
我需要一个配置良好的内置函数,而不是解决方法......但我需要工作并显示结果,所以我使用正则表达式......
SELECT id, TRIM(regexp_replace(tit, E'[\\n\\r\\t ]+', ' ', 'g')) AS tit
FROM (
SELECT
id, -- xpath returns array of 1, 2, or more strings
unnest( xpath('//p[@class="secTitle1"]', texto )::VARCHAR[] ) AS tit
FROM t
) AS tmp
因此,“仅简单的空间修剪”是不友好的,而不是 util (!)。
在@mu评论后编辑
我试试
SELECT id, TRIM(tit, E'\\n\\r\\t') AS tit
和
SELECT id, TRIM(tit, '\n\r\t') AS tit
两者都不起作用。
问题仍然存在:
没有 TRIM 选项或 postgresql 配置可以根据需要对 TRIM 工作说吗?
我可以
normalize-space()
在 xpath 上使用吗?如何?我使用的是 PostgreSQL 9.1,需要升级吗?