Hallo zusammen
Ich arbeite gerade an einem Oracle-Projekt, in dem ein Gesetz im XML-Format in die Datenbank geschrieben wird. In diesem Gesetz gibt es Artikel, Absätze, Ziffern etc.
Nun gibt es Gewisse Artikel mit Ziffern, die im Index einen Punkt haben. Zum Beispiel: art:3;abs:2;ziff:2.3.
Dies entspricht einer Klartext-Positionsangabe in einer separaten Spalte, um in der XML-Spalte den entsprechenden Node zu finden.
Wenn ich jetzt eine einfache Abfrage nach diesem Feld mache, sprich:
dann wird mir diese Zeile auch angezeigt.Code:select * from db where position='art:3;abs:2;ziff:2.3'
Wenn ich jedoch diese Position aus dem XML-Feld auslesen will mit Oracle-XML-Funktionen:
dann erhalte ich kein Resultat obschon der zu suchende Node vorhanden ist. Dieses Verhalten ist ausschliesslich bei Nodes mit Indexes, die mit Punkten versehen sind, festzustellen.Code:select rowid from db where rowid=CHARTOROWID('die_rowid') and EXISTSNODE(feld,'/xml/pfad/zu/art[@position="art:3"]/abs[@position="abs:2"]/ziff[@position="ziff:2.3"]')=1
Irgendwie kann ich nicht verstehen, warum das nicht gehen sollte. "ziff:2.3" ist ja ein String.
Ich erhalte auch keine Fehlermeldung. Und dass der Punkt in ziff:2.3 als Steuerzeichen interpretiert wird, kann ich mir kaum vorstellen. Dennoch frage ich mich, ob ich diesen Punkt speziell behandeln muss, damit das zweite oben beschriebene select eine Antwort liefert.
Lesezeichen