IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

contains inpath numérique


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 23
    Par défaut 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 : 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;
    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 : 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
    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 !!

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 23
    Par défaut
    Problème résolu, si j'inverse les "contains" (c'est à dire recherche par pays puis par no postal) ça fonctionne ! Mais si quelqu'un a une explication, je suis preneur quand même.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Debutant] Méthodes numériques
    Par griffu01 dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 24/05/2004, 21h21
  2. Réponses: 10
    Dernier message: 18/05/2004, 16h42
  3. retait d'une valeur numérique au mieu d'un texte
    Par RémiDavid dans le forum Langage SQL
    Réponses: 3
    Dernier message: 28/04/2004, 16h20
  4. [Turbo C++] Fonciton containing for are not expanded inline
    Par BuG dans le forum Autres éditeurs
    Réponses: 6
    Dernier message: 17/02/2003, 06h48
  5. [Delphi 6] EditBox -> valeurs numériques ?
    Par JBrek dans le forum Composants VCL
    Réponses: 9
    Dernier message: 02/12/2002, 13h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo