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 :

Faire un replace


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut Faire un replace
    Bonjour a tous,
    je galere pour faire un replace avec ORACLE.

    j'ai ceci:

    <md shared="false">
    <mid>439220</mid>
    <description />
    <name>accessrights</name>
    <type>rights_md</type>
    <value>
    <![CDATA[ <?xml version="1.0" encoding="UTF-8"?><ar:access_right_md xmlns:ar="http://com/exlibris/digitool/repository/api/xmlbeans" enabled="true"><ar_copyrights required="false"><text_file></text_file></ar_copyrights><ar_conditions><ar_condition negate="false"><ar_expressions><ar_expression negate="true" ar_operation="within"><key>ip_range</key><val1>217.13.122.1</val1><val2>217.13.122.255</val2></ar_expression></ar_expressions></ar_condition><ar_condition negate="false"><ar_expressions><ar_expression negate="false" ar_operation="within"><key>ip_range</key><val1>138.4.1.1</val1><val2>138.4.255.255</val2></ar_expression></ar_expressions></ar_condition><ar_condition negate="false"><ar_expressions><ar_expression negate="false" ar_operation="within"><key>ip_range</key><val1>138.100.1.1</val1><val2>138.100.255.255</val2></ar_expression></ar_expressions></ar_condition></ar_conditions></ar:access_right_md>
    ]]>
    </value>
    </md>
    Et je voudrais remplacer toutes les IP par une autre...

    Quelqu'un saurais comment faire?
    J'ai essaye avec ca:
    update HDEMETADATA_TMP set VALUE=REPLACE('toute la chaine','la nouvelle cahine') where MID='20232';
    mais ca marche pas...car en fait cette partie que je veux remplacer est juste un fragment ...il y a plein d'info avant et apres, donc il faut localiser et remplacer.
    D'avance merci

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Je ne pense pas à avoir tout compris mais regarde si UpdateXml ne t'aide pas.

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut faire un replace
    Merci, je vais regarder ca.
    A+

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 500
    Par défaut
    Je suppose que ce que tu nous a présenté au format xml est dans une base Oracle. Dans ce cas, si ta balise VALUE est une colonne de la table HDEMETADATA_TMP, c'est possible avec REPLACE, mais REPLACE a besoin de 3 arguments (chaîne sur laquelle on travaille, chaîne recherchée, chaîne substituée).
    Ca donne donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    update HDEMETADATA_TMP set VALUE=REPLACE(VALUE, 'toute la chaine', 'la nouvelle chaine') where MID='20232';

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut faire un replace
    Mmmm
    ca implique de faire un copier coller de toute la chaine dans la fonction...
    Y'a pas un moyen de lui dire:

    regarde dans ce champs (value) et lorsque tu voie une IP (la on pourrait donner les 3 premiers chiffres qui sont toujours les memes) remplace la par une autre IP.
    C'est faisable ca?
    car dans cette base y'a une quantité impresionnante de lignes concernées
    L'idée serait de faire un update avec dans la condition:
    WHERE ID in(select
    ou ID between xx and xx
    D'avance merci

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 500
    Par défaut
    C'est exactement ce que fait le REPLACE, en l'utilisant comme je l'ai décris : tu ne fais pas un copier/coller de la chaîne dans la fonction, tu utilises la variable ou le nom de colonne de la table dans laquelle cette chaîne de caractère est stockée.
    J'espère seulement pour toi que tu as les données en base...

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

Discussions similaires

  1. [2008R2] Faire un Replace avec un Regex dans un select
    Par Sql2008 dans le forum Développement
    Réponses: 1
    Dernier message: 29/07/2013, 16h47
  2. [Débutant] faire un replace variable double
    Par cchasse98 dans le forum C#
    Réponses: 5
    Dernier message: 21/02/2013, 10h27
  3. [Oracle] comment faire un to_number sur un replace?
    Par keumlebarbare dans le forum Oracle
    Réponses: 8
    Dernier message: 15/04/2007, 12h12
  4. Faire un replace d'un " dans un string
    Par Seth77 dans le forum C#
    Réponses: 1
    Dernier message: 27/01/2007, 16h10
  5. [C#] Comment faire String.Replace, CaseInsensitive ?
    Par lolo_ici_et_la dans le forum C#
    Réponses: 3
    Dernier message: 17/03/2006, 10h06

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