Bonjour tout le monde!
J'ai un problème dans une requête avec "contains...inpath". Voilà les détails:
La table ADDRESSES contient des numéros postaux et le code ISO du pays. La table TEXTS contient, entre autre, un champ TEXT de type CLOB. Ce champ CLOB contient du XML (une adresse en XML: <adr><zip>1000</zip><country>CH</country></adr>).
Je dois chercher toutes les adresses de la table ADDRESSES qui correspondent à une entrée de la table TEXTS. Voilà la requête:
Mon problème est dans les "contains". Le second (recherche de correspondance avec le pays) fonctionne, si je ne mets que celui-ci j'obtiens la liste de toutes les personnes correspondant au pays en question.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 WITH adr AS (SELECT a.address_id, a.zip, a.country FROM addresses a) SELECT p.name, p.firstname, adr.zip, adr.country FROM adr, texts t, people p WHERE adr.zip IS NOT NULL AND adr.country IS NOT NULL AND p.address_id_fk = a.address_id AND t.text_id = 1234 AND contains (t.text, adr.zip || ' inpath(//adr/zip)') > 0 AND contains (t.text, adr.country || ' inpath(//adr/country)') > 0;
Mais le premier "contains" ne fonctionne pas. Si je le mets comme ci-dessus, j'ai l'erreur suivante:
Si je remplace dans ce "contains" adr.zip par '2630' (le no postal que je devrais obtenir), j'obtiens la liste complète pour le pays correspondant, comme si je ne mettais pas le "contains".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ORA-20000: Oracle Text error: DGR-50901: text query parser syntax error on line 1, column 1
Problème texte/numérique ? Précision: le champ ADDRESSES.ZIP est du varchar2(10)
Si quelqu'un a une idée... merci d'avance !!
Partager