我在PostgresSQL 9.3中使用xpath来搜索包含双引号内容的节点。 我试图用“\”“和”& quo t;“替换”“”,但它们都没有奏效。 “concat”似乎也不起作用。我在互联网上找不到一种工作方法。谁能告诉我如何逃避双引号。
查询:
select
xpath(E'//book[title = "["a book"]"]/price/text()', xmlparse(document b.content))::text[]
from
booksite b
XML内容如:
<book>
<title>["a book"]</title>
<price>29.99</price>
</book>
答案 0 :(得分:0)
XPath 1.0无法转义引号。使用单引号作为XPath字符串分隔符,因为您可以通过将它们加倍来转义SQL中的单引号:
select
xpath(E'//book[title = ''["a book"]'']/price/text()', xmlparse(document b.content))::text[]
from
booksite b
答案 1 :(得分:0)
您可以使用$$
aka Dollar-quoted String Constants:
select
xpath( $$//book[title = '["a book"]' ]/price/text() $$ ,
xmlparse(document b.content))::text[]
from booksite b;
的 SqlFiddleDemo
强>
输出:
╔═══════╗
║ xpath ║
╠═══════╣
║ 29.99 ║
╚═══════╝