contains inpath numérique
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:
Code:
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; |
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.
Mais le premier "contains" ne fonctionne pas. Si je le mets comme ci-dessus, j'ai l'erreur suivante:
Code:
1 2
| ORA-20000: Oracle Text error:
DGR-50901: text query parser syntax error on line 1, column 1 |
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".
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 !!