2016-05-09 17 views
1

Ich verwende Xpath in PostgresSQL 9.3, um Knoten mit Inhalt zu suchen, der doppelte Anführungszeichen enthält. Ich habe versucht, "\" "und" & quo t; "das" "zu ersetzen, aber keiner von ihnen funktionierte. "concat" scheint auch nicht zu funktionieren. Ich konnte im Internet keine Arbeitsmethode finden. Kann mir jemand sagen, wie ich den doppelten Anführungszeichen entkommen kann?PostgresSQL xpath Übereinstimmung mit doppelten Anführungszeichen

Abfrage:

select 
    xpath(E'//book[title = "["a book"]"]/price/text()', xmlparse(document b.content))::text[] 
from 
    booksite b 

XML-Inhalte wie:

<book> 
    <title>["a book"]</title> 
    <price>29.99</price> 
</book> 

Antwort

0

XPath 1.0 bietet keine Möglichkeit, Zitate zu entkommen. Verwenden Sie einfache Anführungszeichen als XPath Zeichenfolgebegrenzer statt, da man durch eine Verdoppelung sie Apostroph in SQL entkommen kann:

select 
    xpath(E'//book[title = ''["a book"]'']/price/text()', xmlparse(document b.content))::text[] 
from 
    booksite b 
+0

es funktioniert! vielen Dank! – Yanxu

+0

Sicher, du bist willkommen! – har07

0

könnten Sie verwenden $$ aka Dollar-quoted String Constants:

select 
    xpath($$//book[title = '["a book"]' ]/price/text() $$ , 
      xmlparse(document b.content))::text[] 
from booksite b; 

SqlFiddleDemo

Ausgabe:

╔═══════╗ 
║ xpath ║ 
╠═══════╣ 
║ 29.99 ║ 
╚═══════╝